//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ using Amazon.AwsToolkit.Telemetry.Events.Core; using System; using System.Collections.Generic; /// -------------------------------------------------------------------------------- /// This file is generated from https://github.com/aws/aws-toolkit-common/tree/main/telemetry /// -------------------------------------------------------------------------------- namespace Amazon.AwsToolkit.Telemetry.Events.Generated { /// Contains methods to record telemetry events public static partial class ToolkitTelemetryEvent { /// Records Telemetry Event: /// Copying an API Gateway remote URL public static void RecordApigatewayCopyUrl(this ITelemetryLogger telemetryLogger, ApigatewayCopyUrl payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apigateway_copyUrl"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Invoking one simulated API Gateway call using the SAM cli public static void RecordApigatewayInvokeLocal(this ITelemetryLogger telemetryLogger, ApigatewayInvokeLocal payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apigateway_invokeLocal"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("httpMethod", payload.HttpMethod); datum.AddMetadata("result", payload.Result); datum.AddMetadata("debug", payload.Debug); if (payload.LambdaArchitecture.HasValue) { datum.AddMetadata("lambdaArchitecture", payload.LambdaArchitecture.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Calling a remote API Gateway public static void RecordApigatewayInvokeRemote(this ITelemetryLogger telemetryLogger, ApigatewayInvokeRemote payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apigateway_invokeRemote"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("httpMethod", payload.HttpMethod); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when starting a local API Gateway server simulator with SAM. Only called when starting it for long running testing, not for single invokes public static void RecordApigatewayStartLocalServer(this ITelemetryLogger telemetryLogger, ApigatewayStartLocalServer payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apigateway_startLocalServer"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the service URL in a browser public static void RecordApprunnerOpenServiceUrl(this ITelemetryLogger telemetryLogger, ApprunnerOpenServiceUrl payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_openServiceUrl"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the service URL public static void RecordApprunnerCopyServiceUrl(this ITelemetryLogger telemetryLogger, ApprunnerCopyServiceUrl payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_copyServiceUrl"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an App Runner service public static void RecordApprunnerCreateService(this ITelemetryLogger telemetryLogger, ApprunnerCreateService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_createService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("appRunnerServiceSource", payload.AppRunnerServiceSource); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Pause a running App Runner service public static void RecordApprunnerPauseService(this ITelemetryLogger telemetryLogger, ApprunnerPauseService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_pauseService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Resume a paused App Runner service public static void RecordApprunnerResumeService(this ITelemetryLogger telemetryLogger, ApprunnerResumeService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_resumeService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an App Runner service public static void RecordApprunnerDeleteService(this ITelemetryLogger telemetryLogger, ApprunnerDeleteService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_deleteService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.AppRunnerServiceStatus.HasValue) { datum.AddMetadata("appRunnerServiceStatus", payload.AppRunnerServiceStatus.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Start a new deployment for an App Runner service public static void RecordApprunnerStartDeployment(this ITelemetryLogger telemetryLogger, ApprunnerStartDeployment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_startDeployment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// View the App Runner application logs (the logs for your running service) public static void RecordApprunnerViewApplicationLogs(this ITelemetryLogger telemetryLogger, ApprunnerViewApplicationLogs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_viewApplicationLogs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// View the App Runner service logs (the logs produced by App Runner) public static void RecordApprunnerViewServiceLogs(this ITelemetryLogger telemetryLogger, ApprunnerViewServiceLogs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "apprunner_viewServiceLogs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Captures the result of adding a new connection in the 'Add New Connection' workflow public static void RecordAuthAddConnection(this ITelemetryLogger telemetryLogger, AuthAddConnection payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "auth_addConnection"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("source", payload.Source); datum.AddMetadata("featureId", payload.FeatureId); datum.AddMetadata("credentialSourceId", payload.CredentialSourceId); datum.AddMetadata("isAggregated", payload.IsAggregated); datum.AddMetadata("result", payload.Result); if (payload.Attempts.HasValue) { datum.AddMetadata("attempts", payload.Attempts.Value); } datum.AddMetadata("invalidInputFields", payload.InvalidInputFields); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The diff/change in Auth connections public static void RecordAuthAddedConnections(this ITelemetryLogger telemetryLogger, AuthAddedConnections payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "auth_addedConnections"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("source", payload.Source); datum.AddMetadata("authConnectionsCount", payload.AuthConnectionsCount); datum.AddMetadata("newAuthConnectionsCount", payload.NewAuthConnectionsCount); datum.AddMetadata("enabledAuthConnections", payload.EnabledAuthConnections); datum.AddMetadata("newEnabledAuthConnections", payload.NewEnabledAuthConnections); datum.AddMetadata("attempts", payload.Attempts); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user clicks yes or no to switch role upon adding new connection public static void RecordAuthSwitchRoles(this ITelemetryLogger telemetryLogger, AuthSwitchRoles payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "auth_switchRoles"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("authConnectionsCount", payload.AuthConnectionsCount); datum.AddMetadata("userChoice", payload.UserChoice); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the ARN of an AWS resource public static void RecordAwsCopyArn(this ITelemetryLogger telemetryLogger, AwsCopyArn payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_copyArn"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("serviceType", payload.ServiceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an AWS resource public static void RecordAwsDeleteResource(this ITelemetryLogger telemetryLogger, AwsDeleteResource payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_deleteResource"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Select a credentials profile public static void RecordAwsSetCredentials(this ITelemetryLogger telemetryLogger, AwsSetCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_setCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.CredentialType.HasValue) { datum.AddMetadata("credentialType", payload.CredentialType.Value); } if (payload.CredentialSourceId.HasValue) { datum.AddMetadata("credentialSourceId", payload.CredentialSourceId.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A region change occurred public static void RecordAwsSetRegion(this ITelemetryLogger telemetryLogger, AwsSetRegion payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_setRegion"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A partition change occurred public static void RecordAwsSetPartition(this ITelemetryLogger telemetryLogger, AwsSetPartition payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_setPartition"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("partitionId", payload.PartitionId); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the credentials file public static void RecordAwsOpenCredentials(this ITelemetryLogger telemetryLogger, AwsOpenCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_openCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Opens a url public static void RecordAwsOpenUrl(this ITelemetryLogger telemetryLogger, AwsOpenUrl payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_openUrl"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("url", payload.Url); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Save credentials public static void RecordAwsSaveCredentials(this ITelemetryLogger telemetryLogger, AwsSaveCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_saveCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Modify credentials (e.g. Add, Edit, Delete) public static void RecordAwsModifyCredentials(this ITelemetryLogger telemetryLogger, AwsModifyCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_modifyCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("credentialModification", payload.CredentialModification); datum.AddMetadata("source", payload.Source); datum.AddMetadata("serviceType", payload.ServiceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Load credentials from a credential source public static void RecordAwsLoadCredentials(this ITelemetryLogger telemetryLogger, AwsLoadCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_loadCredentials"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("credentialSourceId", payload.CredentialSourceId); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a new credentials file public static void RecordAwsCreateCredentials(this ITelemetryLogger telemetryLogger, AwsCreateCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_createCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Inject selected AWS credentials into a third-party run (e.g. RunConfiguration) public static void RecordAwsInjectCredentials(this ITelemetryLogger telemetryLogger, AwsInjectCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_injectCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("runtimeString", payload.RuntimeString); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Validate credentials when selecting new credentials public static void RecordAwsValidateCredentials(this ITelemetryLogger telemetryLogger, AwsValidateCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_validateCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.CredentialType.HasValue) { datum.AddMetadata("credentialType", payload.CredentialType.Value); } if (payload.CredentialSourceId.HasValue) { datum.AddMetadata("credentialSourceId", payload.CredentialSourceId.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Emitted when credentials are automatically refreshed by the AWS SDK or Toolkit public static void RecordAwsRefreshCredentials(this ITelemetryLogger telemetryLogger, AwsRefreshCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_refreshCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.CredentialType.HasValue) { datum.AddMetadata("credentialType", payload.CredentialType.Value); } if (payload.CredentialSourceId.HasValue) { datum.AddMetadata("credentialSourceId", payload.CredentialSourceId.Value); } if (payload.SessionDuration.HasValue) { datum.AddMetadata("sessionDuration", payload.SessionDuration.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when a connection requires login using the browser public static void RecordAwsLoginWithBrowser(this ITelemetryLogger telemetryLogger, AwsLoginWithBrowser payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_loginWithBrowser"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.CredentialType.HasValue) { datum.AddMetadata("credentialType", payload.CredentialType.Value); } if (payload.CredentialSourceId.HasValue) { datum.AddMetadata("credentialSourceId", payload.CredentialSourceId.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open docs for the extension public static void RecordAwsHelp(this ITelemetryLogger telemetryLogger, AwsHelp payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_help"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("name", payload.Name); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the quickstart guide public static void RecordAwsHelpQuickstart(this ITelemetryLogger telemetryLogger, AwsHelpQuickstart payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_helpQuickstart"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the repo for the extension public static void RecordAwsShowExtensionSource(this ITelemetryLogger telemetryLogger, AwsShowExtensionSource payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_showExtensionSource"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Refresh the AWS explorer window public static void RecordAwsRefreshExplorer(this ITelemetryLogger telemetryLogger, AwsRefreshExplorer payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_refreshExplorer"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Expand a service root node in the AWS explorer window public static void RecordAwsExpandExplorerNode(this ITelemetryLogger telemetryLogger, AwsExpandExplorerNode payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_expandExplorerNode"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("serviceType", payload.ServiceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Report an issue with the plugin public static void RecordAwsReportPluginIssue(this ITelemetryLogger telemetryLogger, AwsReportPluginIssue payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_reportPluginIssue"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying an application to Elastic Beanstalk public static void RecordBeanstalkDeploy(this ITelemetryLogger telemetryLogger, BeanstalkDeploy payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_deploy"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("initialDeploy", payload.InitialDeploy); datum.AddMetadata("name", payload.Name); datum.AddMetadata("framework", payload.Framework); if (payload.XrayEnabled.HasValue) { datum.AddMetadata("xrayEnabled", payload.XrayEnabled.Value); } if (payload.EnhancedHealthEnabled.HasValue) { datum.AddMetadata("enhancedHealthEnabled", payload.EnhancedHealthEnabled.Value); } datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user completes the Elastic Beanstalk publish wizard public static void RecordBeanstalkPublishWizard(this ITelemetryLogger telemetryLogger, BeanstalkPublishWizard payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_publishWizard"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view the status of the Beanstalk Application public static void RecordBeanstalkOpenApplication(this ITelemetryLogger telemetryLogger, BeanstalkOpenApplication payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_openApplication"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view the status of the Beanstalk Environment public static void RecordBeanstalkOpenEnvironment(this ITelemetryLogger telemetryLogger, BeanstalkOpenEnvironment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_openEnvironment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes a Beanstalk application public static void RecordBeanstalkDeleteApplication(this ITelemetryLogger telemetryLogger, BeanstalkDeleteApplication payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_deleteApplication"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes a Beanstalk environment public static void RecordBeanstalkDeleteEnvironment(this ITelemetryLogger telemetryLogger, BeanstalkDeleteEnvironment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_deleteEnvironment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Restart application server for a Beanstalk environment public static void RecordBeanstalkRestartApplication(this ITelemetryLogger telemetryLogger, BeanstalkRestartApplication payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_restartApplication"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Rebuild a Beanstalk environment public static void RecordBeanstalkRebuildEnvironment(this ITelemetryLogger telemetryLogger, BeanstalkRebuildEnvironment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_rebuildEnvironment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Edit configuration of a Beanstalk environment public static void RecordBeanstalkEditEnvironment(this ITelemetryLogger telemetryLogger, BeanstalkEditEnvironment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "beanstalk_editEnvironment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view the status of the CloudFront Distribution public static void RecordCloudfrontOpenDistribution(this ITelemetryLogger telemetryLogger, CloudfrontOpenDistribution payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_openDistribution"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view the status of the CloudFront Streaming Distribution public static void RecordCloudfrontOpenStreamingDistribution(this ITelemetryLogger telemetryLogger, CloudfrontOpenStreamingDistribution payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_openStreamingDistribution"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view the Cloudfront Invalidation requests public static void RecordCloudfrontOpenInvalidationRequest(this ITelemetryLogger telemetryLogger, CloudfrontOpenInvalidationRequest payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_openInvalidationRequest"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes a CloudFront Distribution public static void RecordCloudfrontDeleteDistribution(this ITelemetryLogger telemetryLogger, CloudfrontDeleteDistribution payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_deleteDistribution"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes a CloudFront Streaming Distribution public static void RecordCloudfrontDeleteStreamingDistribution(this ITelemetryLogger telemetryLogger, CloudfrontDeleteStreamingDistribution payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_deleteStreamingDistribution"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a CloudFront Distribution public static void RecordCloudfrontCreateDistribution(this ITelemetryLogger telemetryLogger, CloudfrontCreateDistribution payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_createDistribution"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a CloudFront Streaming Distribution public static void RecordCloudfrontCreateStreamingDistribution(this ITelemetryLogger telemetryLogger, CloudfrontCreateStreamingDistribution payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudfront_createStreamingDistribution"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the ARN of a CloudWatch Logs entity public static void RecordCloudwatchlogsCopyArn(this ITelemetryLogger telemetryLogger, CloudwatchlogsCopyArn payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_copyArn"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("cloudWatchResourceType", payload.CloudWatchResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a CloudWatch Logs entity. ServiceType and source indicate where the request came from (example: while viewing an ECS container) public static void RecordCloudwatchlogsOpen(this ITelemetryLogger telemetryLogger, CloudwatchlogsOpen payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_open"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("cloudWatchResourceType", payload.CloudWatchResourceType); if (payload.CloudWatchLogsPresentation.HasValue) { datum.AddMetadata("cloudWatchLogsPresentation", payload.CloudWatchLogsPresentation.Value); } datum.AddMetadata("serviceType", payload.ServiceType); if (payload.HasTextFilter.HasValue) { datum.AddMetadata("hasTextFilter", payload.HasTextFilter.Value); } if (payload.HasTimeFilter.HasValue) { datum.AddMetadata("hasTimeFilter", payload.HasTimeFilter.Value); } datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the CloudWatch Logs group window. ServiceType indicates that it was opened from a different service (like directly from an ECS container) (Deprecated - use cloudwatchlogs_open) public static void RecordCloudwatchlogsOpenGroup(this ITelemetryLogger telemetryLogger, CloudwatchlogsOpenGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_openGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("serviceType", payload.ServiceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a CloudWatch Logs stream in the window. ServiceType indicates that it was opened from a different service (like directly from an ECS container) (Deprecated - use cloudwatchlogs_open) public static void RecordCloudwatchlogsOpenStream(this ITelemetryLogger telemetryLogger, CloudwatchlogsOpenStream payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_openStream"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("serviceType", payload.ServiceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete a CloudWatch Logs entity. public static void RecordCloudwatchlogsDelete(this ITelemetryLogger telemetryLogger, CloudwatchlogsDelete payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_delete"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("cloudWatchResourceType", payload.CloudWatchResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Download a CloudWatch Logs entity. Value indicates the final size of the formatted stream in bytes. public static void RecordCloudwatchlogsDownload(this ITelemetryLogger telemetryLogger, CloudwatchlogsDownload payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_download"; datum.Unit = Unit.Bytes; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("cloudWatchResourceType", payload.CloudWatchResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Download a stream to a file on disk. Value indicates the final size of the formatted stream. (Deprecated - use cloudwatchlogs_download) public static void RecordCloudwatchlogsDownloadStreamToFile(this ITelemetryLogger telemetryLogger, CloudwatchlogsDownloadStreamToFile payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_downloadStreamToFile"; datum.Unit = Unit.Bytes; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Download a stream to memory then open in an editor. public static void RecordCloudwatchlogsOpenStreamInEditor(this ITelemetryLogger telemetryLogger, CloudwatchlogsOpenStreamInEditor payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_openStreamInEditor"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the currently open (possibly filtered) messages to an editor public static void RecordCloudwatchlogsViewCurrentMessagesInEditor(this ITelemetryLogger telemetryLogger, CloudwatchlogsViewCurrentMessagesInEditor payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_viewCurrentMessagesInEditor"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Word wrap events off/on public static void RecordCloudwatchlogsWrapEvents(this ITelemetryLogger telemetryLogger, CloudwatchlogsWrapEvents payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_wrapEvents"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("enabled", payload.Enabled); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Tail stream off/on public static void RecordCloudwatchlogsTailStream(this ITelemetryLogger telemetryLogger, CloudwatchlogsTailStream payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_tailStream"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("enabled", payload.Enabled); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Refresh a CloudWatch Logs entity public static void RecordCloudwatchlogsRefresh(this ITelemetryLogger telemetryLogger, CloudwatchlogsRefresh payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_refresh"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("cloudWatchResourceType", payload.CloudWatchResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Refresh group is pressed (Deprecated, use cloudwatchlogs_refresh) public static void RecordCloudwatchlogsRefreshGroup(this ITelemetryLogger telemetryLogger, CloudwatchlogsRefreshGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_refreshGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Refresh stream is pressed (Deprecated, use cloudwatchlogs_refresh) public static void RecordCloudwatchlogsRefreshStream(this ITelemetryLogger telemetryLogger, CloudwatchlogsRefreshStream payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_refreshStream"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Filters a CloudWatch Logs entity. (Essentially a subset of cloudwatchlogs_open) public static void RecordCloudwatchlogsFilter(this ITelemetryLogger telemetryLogger, CloudwatchlogsFilter payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_filter"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("cloudWatchResourceType", payload.CloudWatchResourceType); datum.AddMetadata("source", payload.Source); if (payload.HasTextFilter.HasValue) { datum.AddMetadata("hasTextFilter", payload.HasTextFilter.Value); } if (payload.HasTimeFilter.HasValue) { datum.AddMetadata("hasTimeFilter", payload.HasTimeFilter.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when a stream is searched public static void RecordCloudwatchlogsSearchStream(this ITelemetryLogger telemetryLogger, CloudwatchlogsSearchStream payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_searchStream"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when a group is searched public static void RecordCloudwatchlogsSearchGroup(this ITelemetryLogger telemetryLogger, CloudwatchlogsSearchGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_searchGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Show event around a time period in ms specified by Value public static void RecordCloudwatchlogsShowEventsAround(this ITelemetryLogger telemetryLogger, CloudwatchlogsShowEventsAround payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchlogs_showEventsAround"; datum.Unit = Unit.Milliseconds; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating a CloudFormation project public static void RecordCloudformationCreateProject(this ITelemetryLogger telemetryLogger, CloudformationCreateProject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudformation_createProject"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("templateName", payload.TemplateName); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying a CloudFormation template public static void RecordCloudformationDeploy(this ITelemetryLogger telemetryLogger, CloudformationDeploy payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudformation_deploy"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("initialDeploy", payload.InitialDeploy); datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user completes the CloudFormation template publish wizard public static void RecordCloudformationPublishWizard(this ITelemetryLogger telemetryLogger, CloudformationPublishWizard payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudformation_publishWizard"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a CloudFormation stack in the stack viewer public static void RecordCloudformationOpen(this ITelemetryLogger telemetryLogger, CloudformationOpen payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudformation_open"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A repo is cloned from CodeCommit public static void RecordCodecommitCloneRepo(this ITelemetryLogger telemetryLogger, CodecommitCloneRepo payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecommit_cloneRepo"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A repo is created in CodeCommit public static void RecordCodecommitCreateRepo(this ITelemetryLogger telemetryLogger, CodecommitCreateRepo payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecommit_createRepo"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A connection is established to CodeCommit to perform actions on repos public static void RecordCodecommitSetCredentials(this ITelemetryLogger telemetryLogger, CodecommitSetCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecommit_setCredentials"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.CredentialType.HasValue) { datum.AddMetadata("credentialType", payload.CredentialType.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a DynamoDB table public static void RecordDynamodbCreateTable(this ITelemetryLogger telemetryLogger, DynamodbCreateTable payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamodb_createTable"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete a DynamoDB table public static void RecordDynamodbDeleteTable(this ITelemetryLogger telemetryLogger, DynamodbDeleteTable payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamodb_deleteTable"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Modify a DynamoDB entity public static void RecordDynamodbEdit(this ITelemetryLogger telemetryLogger, DynamodbEdit payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamodb_edit"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("dynamoDbTarget", payload.DynamoDbTarget); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Fetch records from a DynamoDB table in the table browser public static void RecordDynamodbFetchRecords(this ITelemetryLogger telemetryLogger, DynamodbFetchRecords payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamodb_fetchRecords"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("dynamoDbFetchType", payload.DynamoDbFetchType); if (payload.DynamoDbIndexType.HasValue) { datum.AddMetadata("dynamoDbIndexType", payload.DynamoDbIndexType.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a DynamoDB table in the table browser public static void RecordDynamodbOpenTable(this ITelemetryLogger telemetryLogger, DynamodbOpenTable payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamodb_openTable"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// View a DynamoDB entity public static void RecordDynamodbView(this ITelemetryLogger telemetryLogger, DynamodbView payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamodb_view"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("dynamoDbTarget", payload.DynamoDbTarget); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Change the state of an EC2 Instance public static void RecordEc2ChangeState(this ITelemetryLogger telemetryLogger, Ec2ChangeState payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_changeState"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("ec2InstanceState", payload.Ec2InstanceState); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Remove the private key of an EC2 Key Pair from internal storage public static void RecordEc2ClearPrivateKey(this ITelemetryLogger telemetryLogger, Ec2ClearPrivateKey payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_clearPrivateKey"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Perform a connection to an EC2 Instance public static void RecordEc2ConnectToInstance(this ITelemetryLogger telemetryLogger, Ec2ConnectToInstance payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_connectToInstance"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("ec2ConnectionType", payload.Ec2ConnectionType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy AMI image to another region public static void RecordEc2CopyAmiToRegion(this ITelemetryLogger telemetryLogger, Ec2CopyAmiToRegion payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_copyAmiToRegion"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an image from an EC2 Instance public static void RecordEc2CreateAmi(this ITelemetryLogger telemetryLogger, Ec2CreateAmi payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_createAmi"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create (allocate) an Elastic IP address public static void RecordEc2CreateElasticIp(this ITelemetryLogger telemetryLogger, Ec2CreateElasticIp payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_createElasticIp"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an EC2 Key Pair public static void RecordEc2CreateKeyPair(this ITelemetryLogger telemetryLogger, Ec2CreateKeyPair payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_createKeyPair"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an EC2 security group public static void RecordEc2CreateSecurityGroup(this ITelemetryLogger telemetryLogger, Ec2CreateSecurityGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_createSecurityGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an EC2 volume snapshot public static void RecordEc2CreateSnapshot(this ITelemetryLogger telemetryLogger, Ec2CreateSnapshot payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_createSnapshot"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an EC2 volume public static void RecordEc2CreateVolume(this ITelemetryLogger telemetryLogger, Ec2CreateVolume payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_createVolume"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete (de-register) an AMI image public static void RecordEc2DeleteAmi(this ITelemetryLogger telemetryLogger, Ec2DeleteAmi payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_deleteAmi"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete (release) an Elastic IP address public static void RecordEc2DeleteElasticIp(this ITelemetryLogger telemetryLogger, Ec2DeleteElasticIp payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_deleteElasticIp"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an EC2 Key Pair public static void RecordEc2DeleteKeyPair(this ITelemetryLogger telemetryLogger, Ec2DeleteKeyPair payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_deleteKeyPair"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an EC2 security group public static void RecordEc2DeleteSecurityGroup(this ITelemetryLogger telemetryLogger, Ec2DeleteSecurityGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_deleteSecurityGroup"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an EC2 Volume Snapshot public static void RecordEc2DeleteSnapshot(this ITelemetryLogger telemetryLogger, Ec2DeleteSnapshot payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_deleteSnapshot"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an EC2 Volume public static void RecordEc2DeleteVolume(this ITelemetryLogger telemetryLogger, Ec2DeleteVolume payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_deleteVolume"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Edit AMI image permissions public static void RecordEc2EditAmiPermission(this ITelemetryLogger telemetryLogger, Ec2EditAmiPermission payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editAmiPermission"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Associate or disassociate an Elastic IP with an EC2 Instance public static void RecordEc2EditInstanceElasticIp(this ITelemetryLogger telemetryLogger, Ec2EditInstanceElasticIp payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editInstanceElasticIp"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.Enabled.HasValue) { datum.AddMetadata("enabled", payload.Enabled.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Adjust the shutdown behavior of an EC2 Instance public static void RecordEc2EditInstanceShutdownBehavior(this ITelemetryLogger telemetryLogger, Ec2EditInstanceShutdownBehavior payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editInstanceShutdownBehavior"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Adjust the termination protection of an EC2 Instance public static void RecordEc2EditInstanceTerminationProtection(this ITelemetryLogger telemetryLogger, Ec2EditInstanceTerminationProtection payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editInstanceTerminationProtection"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.Enabled.HasValue) { datum.AddMetadata("enabled", payload.Enabled.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Adjust the instance type of an EC2 Instance public static void RecordEc2EditInstanceType(this ITelemetryLogger telemetryLogger, Ec2EditInstanceType payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editInstanceType"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Adjust an EC2 Instance's user data public static void RecordEc2EditInstanceUserData(this ITelemetryLogger telemetryLogger, Ec2EditInstanceUserData payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editInstanceUserData"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Alter an EC2 security group permission public static void RecordEc2EditSecurityGroupPermission(this ITelemetryLogger telemetryLogger, Ec2EditSecurityGroupPermission payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editSecurityGroupPermission"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Attach (enabled = true) or detach a volume public static void RecordEc2EditVolumeAttachment(this ITelemetryLogger telemetryLogger, Ec2EditVolumeAttachment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_editVolumeAttachment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("enabled", payload.Enabled); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Save the private key of an EC2 Key Pair out to disk public static void RecordEc2ExportPrivateKey(this ITelemetryLogger telemetryLogger, Ec2ExportPrivateKey payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_exportPrivateKey"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Store the private key of an EC2 Key Pair in internal storage public static void RecordEc2ImportPrivateKey(this ITelemetryLogger telemetryLogger, Ec2ImportPrivateKey payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_importPrivateKey"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Launch an EC2 Instance public static void RecordEc2LaunchInstance(this ITelemetryLogger telemetryLogger, Ec2LaunchInstance payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_launchInstance"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view EC2 Instances public static void RecordEc2OpenInstances(this ITelemetryLogger telemetryLogger, Ec2OpenInstances payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_openInstances"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view EC2 AMIs public static void RecordEc2OpenAMIs(this ITelemetryLogger telemetryLogger, Ec2OpenAMIs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_openAMIs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view EC2 Elastic IPs public static void RecordEc2OpenElasticIPs(this ITelemetryLogger telemetryLogger, Ec2OpenElasticIPs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_openElasticIPs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open to view EC2 Key pairs public static void RecordEc2OpenKeyPairs(this ITelemetryLogger telemetryLogger, Ec2OpenKeyPairs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_openKeyPairs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view EC2 Security Groups public static void RecordEc2OpenSecurityGroups(this ITelemetryLogger telemetryLogger, Ec2OpenSecurityGroups payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_openSecurityGroups"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view EC2 Volumes public static void RecordEc2OpenVolumes(this ITelemetryLogger telemetryLogger, Ec2OpenVolumes payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_openVolumes"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// View the system log of an EC2 Instance public static void RecordEc2ViewInstanceSystemLog(this ITelemetryLogger telemetryLogger, Ec2ViewInstanceSystemLog payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_viewInstanceSystemLog"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open to view status of an ECS Cluster public static void RecordEcsOpenCluster(this ITelemetryLogger telemetryLogger, EcsOpenCluster payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_openCluster"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// View an EC2 Instance's user data public static void RecordEc2ViewInstanceUserData(this ITelemetryLogger telemetryLogger, Ec2ViewInstanceUserData payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ec2_viewInstanceUserData"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when ECS execute command is enabled public static void RecordEcsEnableExecuteCommand(this ITelemetryLogger telemetryLogger, EcsEnableExecuteCommand payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_enableExecuteCommand"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when ECS execute command is disabled public static void RecordEcsDisableExecuteCommand(this ITelemetryLogger telemetryLogger, EcsDisableExecuteCommand payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_disableExecuteCommand"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when the ECS execute command is run public static void RecordEcsRunExecuteCommand(this ITelemetryLogger telemetryLogger, EcsRunExecuteCommand payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_runExecuteCommand"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("ecsExecuteCommandType", payload.EcsExecuteCommandType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when the user copies the repository uri from a node public static void RecordEcrCopyRepositoryUri(this ITelemetryLogger telemetryLogger, EcrCopyRepositoryUri payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecr_copyRepositoryUri"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when the user copies the repository tag uri from a node. The tag uri is the repository uri + : + the tag name public static void RecordEcrCopyTagUri(this ITelemetryLogger telemetryLogger, EcrCopyTagUri payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecr_copyTagUri"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating a new ECR repository public static void RecordEcrCreateRepository(this ITelemetryLogger telemetryLogger, EcrCreateRepository payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecr_createRepository"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deleting an existing ECR repository public static void RecordEcrDeleteRepository(this ITelemetryLogger telemetryLogger, EcrDeleteRepository payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecr_deleteRepository"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deleting a tag in an ECR repository. The operation is a batch operation by default, value represents the number of tags deleted. public static void RecordEcrDeleteTags(this ITelemetryLogger telemetryLogger, EcrDeleteTags payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecr_deleteTags"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying an image to ECR public static void RecordEcrDeployImage(this ITelemetryLogger telemetryLogger, EcrDeployImage payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecr_deployImage"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.EcrDeploySource.HasValue) { datum.AddMetadata("ecrDeploySource", payload.EcrDeploySource.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying a scheduled task to an ECS cluster public static void RecordEcsDeployScheduledTask(this ITelemetryLogger telemetryLogger, EcsDeployScheduledTask payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_deployScheduledTask"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("ecsLaunchType", payload.EcsLaunchType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying a service to an ECS cluster public static void RecordEcsDeployService(this ITelemetryLogger telemetryLogger, EcsDeployService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_deployService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("ecsLaunchType", payload.EcsLaunchType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying a task to an ECS cluster public static void RecordEcsDeployTask(this ITelemetryLogger telemetryLogger, EcsDeployTask payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_deployTask"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("ecsLaunchType", payload.EcsLaunchType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user completes the ECS publish wizard public static void RecordEcsPublishWizard(this ITelemetryLogger telemetryLogger, EcsPublishWizard payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_publishWizard"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open to view status of an ECS Repository public static void RecordEcsOpenRepository(this ITelemetryLogger telemetryLogger, EcsOpenRepository payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_openRepository"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes an ECS service public static void RecordEcsDeleteService(this ITelemetryLogger telemetryLogger, EcsDeleteService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_deleteService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Edit configuration of an ECS service public static void RecordEcsEditService(this ITelemetryLogger telemetryLogger, EcsEditService payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_editService"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an ECS cluster public static void RecordEcsDeleteCluster(this ITelemetryLogger telemetryLogger, EcsDeleteCluster payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_deleteCluster"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Stop ECS task(s) public static void RecordEcsStopTask(this ITelemetryLogger telemetryLogger, EcsStopTask payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_stopTask"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete ECS Scheduled task(s) public static void RecordEcsDeleteScheduledTask(this ITelemetryLogger telemetryLogger, EcsDeleteScheduledTask payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ecs_deleteScheduledTask"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called while submitting in-IDE feedback public static void RecordFeedbackResult(this ITelemetryLogger telemetryLogger, FeedbackResult payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "feedback_result"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Use authoring features such as autocompletion, syntax checking, and highlighting, for AWS filetypes (CFN, SAM, etc.). Emit this _once_ per file-editing session for a given file. Ideally this is emitted only if authoring features are used, rather than merely opening or touching a file. public static void RecordFileEditAwsFile(this ITelemetryLogger telemetryLogger, FileEditAwsFile payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "file_editAwsFile"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("awsFiletype", payload.AwsFiletype); datum.AddMetadata("filenameExt", payload.FilenameExt); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view/edit IAM Role Policy public static void RecordIamOpenRole(this ITelemetryLogger telemetryLogger, IamOpenRole payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_openRole"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view/edit IAM Group Policy public static void RecordIamOpenGroup(this ITelemetryLogger telemetryLogger, IamOpenGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_openGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view/edit IAM User Configuration public static void RecordIamOpenUser(this ITelemetryLogger telemetryLogger, IamOpenUser payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_openUser"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view/edit an IAM resource public static void RecordIamOpen(this ITelemetryLogger telemetryLogger, IamOpen payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_open"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("iamResourceType", payload.IamResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an IAM resource public static void RecordIamCreate(this ITelemetryLogger telemetryLogger, IamCreate payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_create"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("iamResourceType", payload.IamResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete an IAM resource public static void RecordIamDelete(this ITelemetryLogger telemetryLogger, IamDelete payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_delete"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("iamResourceType", payload.IamResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Edits policy/configuration associated with an IAM resource public static void RecordIamEdit(this ITelemetryLogger telemetryLogger, IamEdit payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_edit"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("iamResourceType", payload.IamResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create Access Key for an IAM user public static void RecordIamCreateUserAccessKey(this ITelemetryLogger telemetryLogger, IamCreateUserAccessKey payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_createUserAccessKey"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete Access Key for an IAM user public static void RecordIamDeleteUserAccessKey(this ITelemetryLogger telemetryLogger, IamDeleteUserAccessKey payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "iam_deleteUserAccessKey"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// called when deleting lambdas remotely public static void RecordLambdaDelete(this ITelemetryLogger telemetryLogger, LambdaDelete payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_delete"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when opening the local configuration of a Lambda to edit public static void RecordLambdaConfigure(this ITelemetryLogger telemetryLogger, LambdaConfigure payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_configure"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating lambdas remotely public static void RecordLambdaCreate(this ITelemetryLogger telemetryLogger, LambdaCreate payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_create"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("runtime", payload.Runtime); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating a lambda project public static void RecordLambdaCreateProject(this ITelemetryLogger telemetryLogger, LambdaCreateProject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_createProject"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("language", payload.Language); datum.AddMetadata("templateName", payload.TemplateName); datum.AddMetadata("variant", payload.Variant); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Jump to a lambda handler from elsewhere public static void RecordLambdaGoToHandler(this ITelemetryLogger telemetryLogger, LambdaGoToHandler payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_goToHandler"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating lambdas remotely public static void RecordLambdaEditFunction(this ITelemetryLogger telemetryLogger, LambdaEditFunction payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_editFunction"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Update.HasValue) { datum.AddMetadata("update", payload.Update.Value); } datum.AddMetadata("lambdaPackageType", payload.LambdaPackageType); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when invoking lambdas remotely public static void RecordLambdaInvokeRemote(this ITelemetryLogger telemetryLogger, LambdaInvokeRemote payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_invokeRemote"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when invoking lambdas locally (with SAM in most toolkits) public static void RecordLambdaInvokeLocal(this ITelemetryLogger telemetryLogger, LambdaInvokeLocal payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_invokeLocal"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("version", payload.Version); datum.AddMetadata("lambdaPackageType", payload.LambdaPackageType); datum.AddMetadata("result", payload.Result); datum.AddMetadata("debug", payload.Debug); if (payload.LambdaArchitecture.HasValue) { datum.AddMetadata("lambdaArchitecture", payload.LambdaArchitecture.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when importing a remote Lambda function public static void RecordLambdaImport(this ITelemetryLogger telemetryLogger, LambdaImport payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_import"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when updating a Lambda function's code outside the context of a SAM template public static void RecordLambdaUpdateFunctionCode(this ITelemetryLogger telemetryLogger, LambdaUpdateFunctionCode payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_updateFunctionCode"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying a Lambda Function public static void RecordLambdaDeploy(this ITelemetryLogger telemetryLogger, LambdaDeploy payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_deploy"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("lambdaPackageType", payload.LambdaPackageType); datum.AddMetadata("result", payload.Result); datum.AddMetadata("initialDeploy", payload.InitialDeploy); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("platform", payload.Platform); if (payload.LambdaArchitecture.HasValue) { datum.AddMetadata("lambdaArchitecture", payload.LambdaArchitecture.Value); } datum.AddMetadata("language", payload.Language); if (payload.XrayEnabled.HasValue) { datum.AddMetadata("xrayEnabled", payload.XrayEnabled.Value); } datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user completes the Lambda publish wizard public static void RecordLambdaPublishWizard(this ITelemetryLogger telemetryLogger, LambdaPublishWizard payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "lambda_publishWizard"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("serviceType", payload.ServiceType); datum.AddMetadata("source", payload.Source); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deleting a cloudformation stack public static void RecordCloudformationDelete(this ITelemetryLogger telemetryLogger, CloudformationDelete payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudformation_delete"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when getting IAM/SecretsManager credentials for a RDS database. Value represents how long it takes in ms. public static void RecordRdsGetCredentials(this ITelemetryLogger telemetryLogger, RdsGetCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_getCredentials"; datum.Unit = Unit.Milliseconds; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("databaseCredentials", payload.DatabaseCredentials); datum.AddMetadata("databaseEngine", payload.DatabaseEngine); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view RDS DB Instances public static void RecordRdsOpenInstances(this ITelemetryLogger telemetryLogger, RdsOpenInstances payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_openInstances"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view RDS Security Groups public static void RecordRdsOpenSecurityGroups(this ITelemetryLogger telemetryLogger, RdsOpenSecurityGroups payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_openSecurityGroups"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view RDS Subnet Groups public static void RecordRdsOpenSubnets(this ITelemetryLogger telemetryLogger, RdsOpenSubnets payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_openSubnets"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Launch a RDS DB instance public static void RecordRdsLaunchInstance(this ITelemetryLogger telemetryLogger, RdsLaunchInstance payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_launchInstance"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a RDS security group public static void RecordRdsCreateSecurityGroup(this ITelemetryLogger telemetryLogger, RdsCreateSecurityGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_createSecurityGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a RDS subnet group public static void RecordRdsCreateSubnetGroup(this ITelemetryLogger telemetryLogger, RdsCreateSubnetGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_createSubnetGroup"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete a RDS DB instance public static void RecordRdsDeleteInstance(this ITelemetryLogger telemetryLogger, RdsDeleteInstance payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_deleteInstance"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete RDS security group(s) public static void RecordRdsDeleteSecurityGroup(this ITelemetryLogger telemetryLogger, RdsDeleteSecurityGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_deleteSecurityGroup"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete RDS subnet group(s) public static void RecordRdsDeleteSubnetGroup(this ITelemetryLogger telemetryLogger, RdsDeleteSubnetGroup payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_deleteSubnetGroup"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating a new database connection configuration to for a RDS database. In Datagrip we do not get this infromation if it is created directly, so this is only counts actions. public static void RecordRdsCreateConnectionConfiguration(this ITelemetryLogger telemetryLogger, RdsCreateConnectionConfiguration payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "rds_createConnectionConfiguration"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("databaseCredentials", payload.DatabaseCredentials); datum.AddMetadata("databaseEngine", payload.DatabaseEngine); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when getting IAM/SecretsManager credentials for a Redshift database. Value represents how long it takes in ms. public static void RecordRedshiftGetCredentials(this ITelemetryLogger telemetryLogger, RedshiftGetCredentials payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "redshift_getCredentials"; datum.Unit = Unit.Milliseconds; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("databaseCredentials", payload.DatabaseCredentials); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when creating a new database connection configuration to for a Redshift database. In Datagrip we do not get this infromation if it is created directly, so this only counts actions. public static void RecordRedshiftCreateConnectionConfiguration(this ITelemetryLogger telemetryLogger, RedshiftCreateConnectionConfiguration payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "redshift_createConnectionConfiguration"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("databaseCredentials", payload.DatabaseCredentials); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when deploying a SAM application public static void RecordSamDeploy(this ITelemetryLogger telemetryLogger, SamDeploy payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sam_deploy"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("version", payload.Version); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when syncing a SAM application public static void RecordSamSync(this ITelemetryLogger telemetryLogger, SamSync payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sam_sync"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("syncedResources", payload.SyncedResources); datum.AddMetadata("lambdaPackageType", payload.LambdaPackageType); datum.AddMetadata("version", payload.Version); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when initing a SAM application public static void RecordSamInit(this ITelemetryLogger telemetryLogger, SamInit payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sam_init"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.Runtime.HasValue) { datum.AddMetadata("runtime", payload.Runtime.Value); } datum.AddMetadata("templateName", payload.TemplateName); datum.AddMetadata("version", payload.Version); if (payload.LambdaPackageType.HasValue) { datum.AddMetadata("lambdaPackageType", payload.LambdaPackageType.Value); } datum.AddMetadata("eventBridgeSchema", payload.EventBridgeSchema); if (payload.LambdaArchitecture.HasValue) { datum.AddMetadata("lambdaArchitecture", payload.LambdaArchitecture.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when selecting an EventBridge schema to view public static void RecordSchemasView(this ITelemetryLogger telemetryLogger, SchemasView payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "schemas_view"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when downloading an EventBridge schema public static void RecordSchemasDownload(this ITelemetryLogger telemetryLogger, SchemasDownload payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "schemas_download"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.SchemaLanguage.HasValue) { datum.AddMetadata("schemaLanguage", payload.SchemaLanguage.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when searching an EventBridge schema registry public static void RecordSchemasSearch(this ITelemetryLogger telemetryLogger, SchemasSearch payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "schemas_search"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when starting the plugin public static void RecordSessionStart(this ITelemetryLogger telemetryLogger, SessionStart payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "session_start"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when stopping the IDE on a best effort basis public static void RecordSessionEnd(this ITelemetryLogger telemetryLogger, SessionEnd payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "session_end"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the bucket name to the clipboard public static void RecordS3CopyBucketName(this ITelemetryLogger telemetryLogger, S3CopyBucketName payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_copyBucketName"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the path of a S3 object to the clipboard public static void RecordS3CopyPath(this ITelemetryLogger telemetryLogger, S3CopyPath payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_copyPath"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the S3 URI of a S3 object to the clipboard (e.g. s3://<bucketName>/abc.txt) public static void RecordS3CopyUri(this ITelemetryLogger telemetryLogger, S3CopyUri payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_copyUri"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the URL of a S3 object to the clipboard public static void RecordS3CopyUrl(this ITelemetryLogger telemetryLogger, S3CopyUrl payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_copyUrl"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("presigned", payload.Presigned); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a S3 bucket public static void RecordS3CreateBucket(this ITelemetryLogger telemetryLogger, S3CreateBucket payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_createBucket"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete a S3 bucket public static void RecordS3DeleteBucket(this ITelemetryLogger telemetryLogger, S3DeleteBucket payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_deleteBucket"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete S3 object(s) public static void RecordS3DeleteObject(this ITelemetryLogger telemetryLogger, S3DeleteObject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_deleteObject"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.SuccessCount.HasValue) { datum.AddMetadata("successCount", payload.SuccessCount.Value); } if (payload.FailedCount.HasValue) { datum.AddMetadata("failedCount", payload.FailedCount.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an S3 folder public static void RecordS3CreateFolder(this ITelemetryLogger telemetryLogger, S3CreateFolder payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_createFolder"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Download S3 object(s) public static void RecordS3DownloadObject(this ITelemetryLogger telemetryLogger, S3DownloadObject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_downloadObject"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.SuccessCount.HasValue) { datum.AddMetadata("successCount", payload.SuccessCount.Value); } if (payload.FailedCount.HasValue) { datum.AddMetadata("failedCount", payload.FailedCount.Value); } if (payload.Component.HasValue) { datum.AddMetadata("component", payload.Component.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Download multiple S3 objects public static void RecordS3DownloadObjects(this ITelemetryLogger telemetryLogger, S3DownloadObjects payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_downloadObjects"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Upload S3 object(s) public static void RecordS3UploadObject(this ITelemetryLogger telemetryLogger, S3UploadObject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_uploadObject"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.SuccessCount.HasValue) { datum.AddMetadata("successCount", payload.SuccessCount.Value); } if (payload.FailedCount.HasValue) { datum.AddMetadata("failedCount", payload.FailedCount.Value); } if (payload.Component.HasValue) { datum.AddMetadata("component", payload.Component.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Rename a single S3 object public static void RecordS3RenameObject(this ITelemetryLogger telemetryLogger, S3RenameObject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_renameObject"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Upload multiple S3 objects public static void RecordS3UploadObjects(this ITelemetryLogger telemetryLogger, S3UploadObjects payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_uploadObjects"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a view of a S3 bucket public static void RecordS3OpenEditor(this ITelemetryLogger telemetryLogger, S3OpenEditor payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_openEditor"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Edit or view one or more S3 objects in the IDE public static void RecordS3EditObject(this ITelemetryLogger telemetryLogger, S3EditObject payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_editObject"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.Component.HasValue) { datum.AddMetadata("component", payload.Component.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view S3 bucket properties public static void RecordS3OpenBucketProperties(this ITelemetryLogger telemetryLogger, S3OpenBucketProperties payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_openBucketProperties"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view S3 Multipart upload public static void RecordS3OpenMultipartUpload(this ITelemetryLogger telemetryLogger, S3OpenMultipartUpload payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "s3_openMultipartUpload"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The Toolkit has completed initialization public static void RecordToolkitInit(this ITelemetryLogger telemetryLogger, ToolkitInit payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "toolkit_init"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.Result.HasValue) { datum.AddMetadata("result", payload.Result.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// View logs for the toolkit public static void RecordToolkitViewLogs(this ITelemetryLogger telemetryLogger, ToolkitViewLogs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "toolkit_viewLogs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open an SQS queue. Initially opens to either the send message pane or poll messages pane. public static void RecordSqsOpenQueue(this ITelemetryLogger telemetryLogger, SqsOpenQueue payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_openQueue"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a new SQS queue public static void RecordSqsCreateQueue(this ITelemetryLogger telemetryLogger, SqsCreateQueue payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_createQueue"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.SqsQueueType.HasValue) { datum.AddMetadata("sqsQueueType", payload.SqsQueueType.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Send a message to an SQS queue public static void RecordSqsSendMessage(this ITelemetryLogger telemetryLogger, SqsSendMessage payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_sendMessage"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Delete one or more messages from an SQS queue. Value indicates the number of messages that we tried to delete. public static void RecordSqsDeleteMessages(this ITelemetryLogger telemetryLogger, SqsDeleteMessages payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_deleteMessages"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Subscribe the queue to messages from an sns topic public static void RecordSqsSubscribeSns(this ITelemetryLogger telemetryLogger, SqsSubscribeSns payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_subscribeSns"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Configure the queue as a trigger for a Lambda public static void RecordSqsConfigureLambdaTrigger(this ITelemetryLogger telemetryLogger, SqsConfigureLambdaTrigger payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_configureLambdaTrigger"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Edit the Queue parameters public static void RecordSqsEditQueueParameters(this ITelemetryLogger telemetryLogger, SqsEditQueueParameters payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_editQueueParameters"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Purge all messages from the queue public static void RecordSqsPurgeQueue(this ITelemetryLogger telemetryLogger, SqsPurgeQueue payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_purgeQueue"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("sqsQueueType", payload.SqsQueueType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes a SQS queue public static void RecordSqsDeleteQueue(this ITelemetryLogger telemetryLogger, SqsDeleteQueue payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sqs_deleteQueue"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); if (payload.SqsQueueType.HasValue) { datum.AddMetadata("sqsQueueType", payload.SqsQueueType.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a SNS Topic public static void RecordSnsCreateTopic(this ITelemetryLogger telemetryLogger, SnsCreateTopic payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_createTopic"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create a SNS Subscription public static void RecordSnsCreateSubscription(this ITelemetryLogger telemetryLogger, SnsCreateSubscription payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_createSubscription"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view details of SNS Topic public static void RecordSnsOpenTopic(this ITelemetryLogger telemetryLogger, SnsOpenTopic payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_openTopic"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view SNS Subscriptions public static void RecordSnsOpenSubscriptions(this ITelemetryLogger telemetryLogger, SnsOpenSubscriptions payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_openSubscriptions"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes a SNS Topic public static void RecordSnsDeleteTopic(this ITelemetryLogger telemetryLogger, SnsDeleteTopic payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_deleteTopic"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Called when user deletes SNS subscription(s) public static void RecordSnsDeleteSubscription(this ITelemetryLogger telemetryLogger, SnsDeleteSubscription payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_deleteSubscription"; datum.Unit = Unit.Count; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Publish message to a SNS topic public static void RecordSnsPublishMessage(this ITelemetryLogger telemetryLogger, SnsPublishMessage payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "sns_publishMessage"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view VPC RouteTable public static void RecordVpcOpenRouteTables(this ITelemetryLogger telemetryLogger, VpcOpenRouteTables payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "vpc_openRouteTables"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view VPC Internet Gateway public static void RecordVpcOpenGateways(this ITelemetryLogger telemetryLogger, VpcOpenGateways payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "vpc_openGateways"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view VPC Network ACLs public static void RecordVpcOpenACLs(this ITelemetryLogger telemetryLogger, VpcOpenACLs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "vpc_openACLs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view VPC Subnets public static void RecordVpcOpenSubnets(this ITelemetryLogger telemetryLogger, VpcOpenSubnets payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "vpc_openSubnets"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open a window to view VPC details public static void RecordVpcOpenVPCs(this ITelemetryLogger telemetryLogger, VpcOpenVPCs payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "vpc_openVPCs"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the insights query editor public static void RecordCloudwatchinsightsOpenEditor(this ITelemetryLogger telemetryLogger, CloudwatchinsightsOpenEditor payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchinsights_openEditor"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("insightsDialogOpenSource", payload.InsightsDialogOpenSource); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Start an insights query public static void RecordCloudwatchinsightsExecuteQuery(this ITelemetryLogger telemetryLogger, CloudwatchinsightsExecuteQuery payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchinsights_executeQuery"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("insightsQueryTimeType", payload.InsightsQueryTimeType); datum.AddMetadata("insightsQueryStringType", payload.InsightsQueryStringType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Save query parameters to AWS public static void RecordCloudwatchinsightsSaveQuery(this ITelemetryLogger telemetryLogger, CloudwatchinsightsSaveQuery payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchinsights_saveQuery"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Retrieve list of available saved queries from AWS public static void RecordCloudwatchinsightsRetrieveQuery(this ITelemetryLogger telemetryLogger, CloudwatchinsightsRetrieveQuery payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchinsights_retrieveQuery"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Get all details for the selected log record public static void RecordCloudwatchinsightsOpenDetailedLogRecord(this ITelemetryLogger telemetryLogger, CloudwatchinsightsOpenDetailedLogRecord payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "cloudwatchinsights_openDetailedLogRecord"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The toolkit tried to retrieve blob data from a url public static void RecordToolkitGetExternalResource(this ITelemetryLogger telemetryLogger, ToolkitGetExternalResource payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "toolkit_getExternalResource"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("url", payload.Url); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The toolkit tried to show a notification message public static void RecordToolkitShowNotification(this ITelemetryLogger telemetryLogger, ToolkitShowNotification payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "toolkit_showNotification"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("id", payload.Id); datum.AddMetadata("component", payload.Component); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The toolkit tried to show an action. Source represents the notification that produced the action public static void RecordToolkitShowAction(this ITelemetryLogger telemetryLogger, ToolkitShowAction payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "toolkit_showAction"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("id", payload.Id); datum.AddMetadata("source", payload.Source); datum.AddMetadata("component", payload.Component); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A user invoked an action. Source represents the notification that produced the action public static void RecordToolkitInvokeAction(this ITelemetryLogger telemetryLogger, ToolkitInvokeAction payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "toolkit_invokeAction"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("id", payload.Id); datum.AddMetadata("source", payload.Source); datum.AddMetadata("component", payload.Component); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Open the dynamic resource model in the IDE public static void RecordDynamicresourceGetResource(this ITelemetryLogger telemetryLogger, DynamicresourceGetResource payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamicresource_getResource"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("resourceType", payload.ResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Expand a Resource Type node public static void RecordDynamicresourceListResource(this ITelemetryLogger telemetryLogger, DynamicresourceListResource payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamicresource_listResource"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("resourceType", payload.ResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Change the list of available dynamic resources in the AWS Explorer public static void RecordDynamicresourceSelectResources(this ITelemetryLogger telemetryLogger, DynamicresourceSelectResources payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamicresource_selectResources"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Copy the dynamic resource identifier public static void RecordDynamicresourceCopyIdentifier(this ITelemetryLogger telemetryLogger, DynamicresourceCopyIdentifier payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamicresource_copyIdentifier"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("resourceType", payload.ResourceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// A dynamic resource mutation request completed public static void RecordDynamicresourceMutateResource(this ITelemetryLogger telemetryLogger, DynamicresourceMutateResource payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "dynamicresource_mutateResource"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("result", payload.Result); datum.AddMetadata("resourceType", payload.ResourceType); datum.AddMetadata("dynamicResourceOperation", payload.DynamicResourceOperation); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// An experiment was activated or deactivated in the Toolkit public static void RecordAwsExperimentActivation(this ITelemetryLogger telemetryLogger, AwsExperimentActivation payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_experimentActivation"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("experimentId", payload.ExperimentId); datum.AddMetadata("experimentState", payload.ExperimentState); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// An external tool was installed automatically public static void RecordAwsToolInstallation(this ITelemetryLogger telemetryLogger, AwsToolInstallation payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_toolInstallation"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("toolId", payload.ToolId); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// An setting was changed by users in the Toolkit. This metric can optionally provide the new state of the setting via settingState. public static void RecordAwsModifySetting(this ITelemetryLogger telemetryLogger, AwsModifySetting payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "aws_modifySetting"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("settingId", payload.SettingId); datum.AddMetadata("settingState", payload.SettingState); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// User clicked/activated a UI element. This does not necessarily have to be an explicit mouse click. Any user action that has the same behavior as a mouse click can use this event. public static void RecordUiClick(this ITelemetryLogger telemetryLogger, UiClick payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "ui_click"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("elementId", payload.ElementId); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// User requested that a resource be opened in the browser using the deeplink service public static void RecordDeeplinkOpen(this ITelemetryLogger telemetryLogger, DeeplinkOpen payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "deeplink_open"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("source", payload.Source); datum.AddMetadata("result", payload.Result); datum.AddMetadata("serviceType", payload.ServiceType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Percentage of user tokens against suggestions until 5 mins of time public static void RecordCodewhispererCodePercentage(this ITelemetryLogger telemetryLogger, CodewhispererCodePercentage payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_codePercentage"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererAcceptedTokens", payload.CodewhispererAcceptedTokens); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("codewhispererPercentage", payload.CodewhispererPercentage); datum.AddMetadata("codewhispererTotalTokens", payload.CodewhispererTotalTokens); datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum.AddMetadata("successCount", payload.SuccessCount); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Client side invocation of the CodeWhisperer Security Scan public static void RecordCodewhispererSecurityScan(this ITelemetryLogger telemetryLogger, CodewhispererSecurityScan payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_securityScan"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererCodeScanLines", payload.CodewhispererCodeScanLines); datum.AddMetadata("codewhispererCodeScanJobId", payload.CodewhispererCodeScanJobId); if (payload.CodewhispererCodeScanProjectBytes.HasValue) { datum.AddMetadata("codewhispererCodeScanProjectBytes", payload.CodewhispererCodeScanProjectBytes.Value); } datum.AddMetadata("codewhispererCodeScanSrcPayloadBytes", payload.CodewhispererCodeScanSrcPayloadBytes); if (payload.CodewhispererCodeScanBuildPayloadBytes.HasValue) { datum.AddMetadata("codewhispererCodeScanBuildPayloadBytes", payload.CodewhispererCodeScanBuildPayloadBytes.Value); } datum.AddMetadata("codewhispererCodeScanSrcZipFileBytes", payload.CodewhispererCodeScanSrcZipFileBytes); if (payload.CodewhispererCodeScanBuildZipFileBytes.HasValue) { datum.AddMetadata("codewhispererCodeScanBuildZipFileBytes", payload.CodewhispererCodeScanBuildZipFileBytes.Value); } datum.AddMetadata("codewhispererCodeScanTotalIssues", payload.CodewhispererCodeScanTotalIssues); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("contextTruncationDuration", payload.ContextTruncationDuration); datum.AddMetadata("artifactsUploadDuration", payload.ArtifactsUploadDuration); datum.AddMetadata("codeScanServiceInvocationsDuration", payload.CodeScanServiceInvocationsDuration); datum.AddMetadata("result", payload.Result); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Client side invocation of the CodeWhisperer service for suggestion public static void RecordCodewhispererServiceInvocation(this ITelemetryLogger telemetryLogger, CodewhispererServiceInvocation payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_serviceInvocation"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.CodewhispererAutomatedTriggerType.HasValue) { datum.AddMetadata("codewhispererAutomatedTriggerType", payload.CodewhispererAutomatedTriggerType.Value); } if (payload.CodewhispererCompletionType.HasValue) { datum.AddMetadata("codewhispererCompletionType", payload.CodewhispererCompletionType.Value); } datum.AddMetadata("codewhispererCursorOffset", payload.CodewhispererCursorOffset); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); if (payload.CodewhispererLastSuggestionIndex.HasValue) { datum.AddMetadata("codewhispererLastSuggestionIndex", payload.CodewhispererLastSuggestionIndex.Value); } datum.AddMetadata("codewhispererLineNumber", payload.CodewhispererLineNumber); datum.AddMetadata("codewhispererRequestId", payload.CodewhispererRequestId); if (payload.CodewhispererRuntime.HasValue) { datum.AddMetadata("codewhispererRuntime", payload.CodewhispererRuntime.Value); } datum.AddMetadata("codewhispererRuntimeSource", payload.CodewhispererRuntimeSource); datum.AddMetadata("codewhispererSessionId", payload.CodewhispererSessionId); if (payload.CodewhispererSupplementalContextTimeout.HasValue) { datum.AddMetadata("codewhispererSupplementalContextTimeout", payload.CodewhispererSupplementalContextTimeout.Value); } if (payload.CodewhispererSupplementalContextIsUtg.HasValue) { datum.AddMetadata("codewhispererSupplementalContextIsUtg", payload.CodewhispererSupplementalContextIsUtg.Value); } if (payload.CodewhispererSupplementalContextLatency.HasValue) { datum.AddMetadata("codewhispererSupplementalContextLatency", payload.CodewhispererSupplementalContextLatency.Value); } if (payload.CodewhispererSupplementalContextLength.HasValue) { datum.AddMetadata("codewhispererSupplementalContextLength", payload.CodewhispererSupplementalContextLength.Value); } datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); datum.AddMetadata("result", payload.Result); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); if (payload.CodewhispererImportRecommendationEnabled.HasValue) { datum.AddMetadata("codewhispererImportRecommendationEnabled", payload.CodewhispererImportRecommendationEnabled.Value); } datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Client side invocation blocked by another invocation in progress public static void RecordCodewhispererBlockedInvocation(this ITelemetryLogger telemetryLogger, CodewhispererBlockedInvocation payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_blockedInvocation"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); if (payload.CodewhispererAutomatedTriggerType.HasValue) { datum.AddMetadata("codewhispererAutomatedTriggerType", payload.CodewhispererAutomatedTriggerType.Value); } datum.AddMetadata("codewhispererCursorOffset", payload.CodewhispererCursorOffset); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("codewhispererLineNumber", payload.CodewhispererLineNumber); datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// User acceptance or rejection of each suggestion returned by the CodeWhisperer service request public static void RecordCodewhispererUserDecision(this ITelemetryLogger telemetryLogger, CodewhispererUserDecision payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_userDecision"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererCompletionType", payload.CodewhispererCompletionType); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); if (payload.CodewhispererPaginationProgress.HasValue) { datum.AddMetadata("codewhispererPaginationProgress", payload.CodewhispererPaginationProgress.Value); } datum.AddMetadata("codewhispererRequestId", payload.CodewhispererRequestId); if (payload.CodewhispererRuntime.HasValue) { datum.AddMetadata("codewhispererRuntime", payload.CodewhispererRuntime.Value); } datum.AddMetadata("codewhispererRuntimeSource", payload.CodewhispererRuntimeSource); datum.AddMetadata("codewhispererSessionId", payload.CodewhispererSessionId); datum.AddMetadata("codewhispererSuggestionIndex", payload.CodewhispererSuggestionIndex); datum.AddMetadata("codewhispererSuggestionReferenceCount", payload.CodewhispererSuggestionReferenceCount); datum.AddMetadata("codewhispererSuggestionReferences", payload.CodewhispererSuggestionReferences); if (payload.CodewhispererSuggestionImportCount.HasValue) { datum.AddMetadata("codewhispererSuggestionImportCount", payload.CodewhispererSuggestionImportCount.Value); } datum.AddMetadata("codewhispererSuggestionState", payload.CodewhispererSuggestionState); if (payload.CodewhispererSupplementalContextTimeout.HasValue) { datum.AddMetadata("codewhispererSupplementalContextTimeout", payload.CodewhispererSupplementalContextTimeout.Value); } if (payload.CodewhispererSupplementalContextIsUtg.HasValue) { datum.AddMetadata("codewhispererSupplementalContextIsUtg", payload.CodewhispererSupplementalContextIsUtg.Value); } if (payload.CodewhispererSupplementalContextLength.HasValue) { datum.AddMetadata("codewhispererSupplementalContextLength", payload.CodewhispererSupplementalContextLength.Value); } datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// User decision aggregated at trigger level public static void RecordCodewhispererUserTriggerDecision(this ITelemetryLogger telemetryLogger, CodewhispererUserTriggerDecision payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_userTriggerDecision"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererSessionId", payload.CodewhispererSessionId); datum.AddMetadata("codewhispererFirstRequestId", payload.CodewhispererFirstRequestId); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); if (payload.CodewhispererIsPartialAcceptance.HasValue) { datum.AddMetadata("codewhispererIsPartialAcceptance", payload.CodewhispererIsPartialAcceptance.Value); } if (payload.CodewhispererPartialAcceptanceCount.HasValue) { datum.AddMetadata("codewhispererPartialAcceptanceCount", payload.CodewhispererPartialAcceptanceCount.Value); } if (payload.CodewhispererCharactersAccepted.HasValue) { datum.AddMetadata("codewhispererCharactersAccepted", payload.CodewhispererCharactersAccepted.Value); } if (payload.CodewhispererCharactersRecommended.HasValue) { datum.AddMetadata("codewhispererCharactersRecommended", payload.CodewhispererCharactersRecommended.Value); } datum.AddMetadata("codewhispererCompletionType", payload.CodewhispererCompletionType); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); if (payload.CodewhispererAutomatedTriggerType.HasValue) { datum.AddMetadata("codewhispererAutomatedTriggerType", payload.CodewhispererAutomatedTriggerType.Value); } datum.AddMetadata("codewhispererLineNumber", payload.CodewhispererLineNumber); datum.AddMetadata("codewhispererCursorOffset", payload.CodewhispererCursorOffset); datum.AddMetadata("codewhispererSuggestionCount", payload.CodewhispererSuggestionCount); datum.AddMetadata("codewhispererSuggestionImportCount", payload.CodewhispererSuggestionImportCount); if (payload.CodewhispererTotalShownTime.HasValue) { datum.AddMetadata("codewhispererTotalShownTime", payload.CodewhispererTotalShownTime.Value); } datum.AddMetadata("codewhispererTriggerCharacter", payload.CodewhispererTriggerCharacter); datum.AddMetadata("codewhispererTypeaheadLength", payload.CodewhispererTypeaheadLength); if (payload.CodewhispererTimeSinceLastDocumentChange.HasValue) { datum.AddMetadata("codewhispererTimeSinceLastDocumentChange", payload.CodewhispererTimeSinceLastDocumentChange.Value); } if (payload.CodewhispererTimeSinceLastUserDecision.HasValue) { datum.AddMetadata("codewhispererTimeSinceLastUserDecision", payload.CodewhispererTimeSinceLastUserDecision.Value); } if (payload.CodewhispererTimeToFirstRecommendation.HasValue) { datum.AddMetadata("codewhispererTimeToFirstRecommendation", payload.CodewhispererTimeToFirstRecommendation.Value); } if (payload.CodewhispererPreviousSuggestionState.HasValue) { datum.AddMetadata("codewhispererPreviousSuggestionState", payload.CodewhispererPreviousSuggestionState.Value); } datum.AddMetadata("codewhispererSuggestionState", payload.CodewhispererSuggestionState); if (payload.CodewhispererClassifierResult.HasValue) { datum.AddMetadata("codewhispererClassifierResult", payload.CodewhispererClassifierResult.Value); } if (payload.CodewhispererSupplementalContextTimeout.HasValue) { datum.AddMetadata("codewhispererSupplementalContextTimeout", payload.CodewhispererSupplementalContextTimeout.Value); } if (payload.CodewhispererSupplementalContextIsUtg.HasValue) { datum.AddMetadata("codewhispererSupplementalContextIsUtg", payload.CodewhispererSupplementalContextIsUtg.Value); } if (payload.CodewhispererSupplementalContextLength.HasValue) { datum.AddMetadata("codewhispererSupplementalContextLength", payload.CodewhispererSupplementalContextLength.Value); } if (payload.CodewhispererClassifierThreshold.HasValue) { datum.AddMetadata("codewhispererClassifierThreshold", payload.CodewhispererClassifierThreshold.Value); } datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Percentage of user modifications for the selected suggestion until a fixed period of time public static void RecordCodewhispererUserModification(this ITelemetryLogger telemetryLogger, CodewhispererUserModification payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_userModification"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererCompletionType", payload.CodewhispererCompletionType); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("codewhispererModificationPercentage", payload.CodewhispererModificationPercentage); datum.AddMetadata("codewhispererRequestId", payload.CodewhispererRequestId); if (payload.CodewhispererRuntime.HasValue) { datum.AddMetadata("codewhispererRuntime", payload.CodewhispererRuntime.Value); } datum.AddMetadata("codewhispererRuntimeSource", payload.CodewhispererRuntimeSource); datum.AddMetadata("codewhispererSessionId", payload.CodewhispererSessionId); datum.AddMetadata("codewhispererSuggestionIndex", payload.CodewhispererSuggestionIndex); datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The duration from user last modification to the first recommendation shown in milliseconds public static void RecordCodewhispererPerceivedLatency(this ITelemetryLogger telemetryLogger, CodewhispererPerceivedLatency payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_perceivedLatency"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererRequestId", payload.CodewhispererRequestId); datum.AddMetadata("codewhispererSessionId", payload.CodewhispererSessionId); datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); datum.AddMetadata("codewhispererCompletionType", payload.CodewhispererCompletionType); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// The latency from each CodeWhisperer components in milliseconds public static void RecordCodewhispererClientComponentLatency(this ITelemetryLogger telemetryLogger, CodewhispererClientComponentLatency payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codewhisperer_clientComponentLatency"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("codewhispererRequestId", payload.CodewhispererRequestId); datum.AddMetadata("codewhispererSessionId", payload.CodewhispererSessionId); datum.AddMetadata("codewhispererPreprocessingLatency", payload.CodewhispererPreprocessingLatency); datum.AddMetadata("codewhispererCredentialFetchingLatency", payload.CodewhispererCredentialFetchingLatency); datum.AddMetadata("codewhispererPostprocessingLatency", payload.CodewhispererPostprocessingLatency); datum.AddMetadata("codewhispererFirstCompletionLatency", payload.CodewhispererFirstCompletionLatency); datum.AddMetadata("codewhispererEndToEndLatency", payload.CodewhispererEndToEndLatency); datum.AddMetadata("codewhispererAllCompletionsLatency", payload.CodewhispererAllCompletionsLatency); datum.AddMetadata("codewhispererCompletionType", payload.CodewhispererCompletionType); datum.AddMetadata("codewhispererTriggerType", payload.CodewhispererTriggerType); datum.AddMetadata("codewhispererLanguage", payload.CodewhispererLanguage); datum.AddMetadata("credentialStartUrl", payload.CredentialStartUrl); datum.AddMetadata("codewhispererUserGroup", payload.CodewhispererUserGroup); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Create an Amazon CodeCatalyst Dev Environment public static void RecordCodecatalystCreateDevEnvironment(this ITelemetryLogger telemetryLogger, CodecatalystCreateDevEnvironment payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecatalyst_createDevEnvironment"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("userId", payload.UserId); datum.AddMetadata("result", payload.Result); if (payload.CodecatalystCreateDevEnvironmentRepoType.HasValue) { datum.AddMetadata("codecatalyst_createDevEnvironmentRepoType", payload.CodecatalystCreateDevEnvironmentRepoType.Value); } datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Update properties of a Amazon CodeCatalyst Dev Environment public static void RecordCodecatalystUpdateDevEnvironmentSettings(this ITelemetryLogger telemetryLogger, CodecatalystUpdateDevEnvironmentSettings payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecatalyst_updateDevEnvironmentSettings"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("userId", payload.UserId); datum.AddMetadata("result", payload.Result); datum.AddMetadata("codecatalyst_updateDevEnvironmentLocationType", payload.CodecatalystUpdateDevEnvironmentLocationType); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Trigger a devfile update on a Amazon CodeCatalyst dev environment public static void RecordCodecatalystUpdateDevfile(this ITelemetryLogger telemetryLogger, CodecatalystUpdateDevfile payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecatalyst_updateDevfile"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("userId", payload.UserId); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Clone a Amazon CodeCatalyst code repository locally public static void RecordCodecatalystLocalClone(this ITelemetryLogger telemetryLogger, CodecatalystLocalClone payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecatalyst_localClone"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("userId", payload.UserId); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Connect to a Amazon CodeCatalyst dev environment public static void RecordCodecatalystConnect(this ITelemetryLogger telemetryLogger, CodecatalystConnect payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecatalyst_connect"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("userId", payload.UserId); datum.AddMetadata("result", payload.Result); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } /// Records Telemetry Event: /// Workflow statistic for connecting to a dev environment public static void RecordCodecatalystDevEnvironmentWorkflowStatistic(this ITelemetryLogger telemetryLogger, CodecatalystDevEnvironmentWorkflowStatistic payload, Func<MetricDatum, MetricDatum> transformDatum = null) { try { var metrics = new Metrics(); if (payload.CreatedOn.HasValue) { metrics.CreatedOn = payload.CreatedOn.Value; } else { metrics.CreatedOn = System.DateTime.Now; } metrics.Data = new List<MetricDatum>(); var datum = new MetricDatum(); datum.MetricName = "codecatalyst_devEnvironmentWorkflowStatistic"; datum.Unit = Unit.None; datum.Passive = payload.Passive; if (payload.Value.HasValue) { datum.Value = payload.Value.Value; } else { datum.Value = 1; } datum.AddMetadata("awsAccount", payload.AwsAccount); datum.AddMetadata("awsRegion", payload.AwsRegion); datum.AddMetadata("reason", payload.Reason); datum.AddMetadata("errorCode", payload.ErrorCode); datum.AddMetadata("causedBy", payload.CausedBy); datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); datum.AddMetadata("requestId", payload.RequestId); datum.AddMetadata("requestServiceType", payload.RequestServiceType); if (payload.Duration.HasValue) { datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); datum.AddMetadata("userId", payload.UserId); datum.AddMetadata("result", payload.Result); datum.AddMetadata("codecatalyst_devEnvironmentWorkflowStep", payload.CodecatalystDevEnvironmentWorkflowStep); datum.AddMetadata("codecatalyst_devEnvironmentWorkflowError", payload.CodecatalystDevEnvironmentWorkflowError); datum = datum.InvokeTransform(transformDatum); metrics.Data.Add(datum); telemetryLogger.Record(metrics); } catch (System.Exception e) { telemetryLogger.Logger.Error("Error recording telemetry event", e); System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); } } } /// Metric field type /// The source artifact of an App Runner service public struct AppRunnerServiceSource { private string _value; /// ecr public static readonly AppRunnerServiceSource Ecr = new AppRunnerServiceSource("ecr"); /// ecrPublic public static readonly AppRunnerServiceSource EcrPublic = new AppRunnerServiceSource("ecrPublic"); /// repository public static readonly AppRunnerServiceSource Repository = new AppRunnerServiceSource("repository"); public AppRunnerServiceSource(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The current state of the App Runner service public struct AppRunnerServiceStatus { private string _value; /// CREATE_FAILED public static readonly AppRunnerServiceStatus CREATEFAILED = new AppRunnerServiceStatus("CREATE_FAILED"); /// RUNNING public static readonly AppRunnerServiceStatus RUNNING = new AppRunnerServiceStatus("RUNNING"); /// DELETED public static readonly AppRunnerServiceStatus DELETED = new AppRunnerServiceStatus("DELETED"); /// DELETE_FAILED public static readonly AppRunnerServiceStatus DELETEFAILED = new AppRunnerServiceStatus("DELETE_FAILED"); /// PAUSED public static readonly AppRunnerServiceStatus PAUSED = new AppRunnerServiceStatus("PAUSED"); /// OPERATION_IN_PROGRESS public static readonly AppRunnerServiceStatus OPERATIONINPROGRESS = new AppRunnerServiceStatus("OPERATION_IN_PROGRESS"); public AppRunnerServiceStatus(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// AWS filetype kind public struct AwsFiletype { private string _value; /// awsCredentials public static readonly AwsFiletype AwsCredentials = new AwsFiletype("awsCredentials"); /// cloudformation public static readonly AwsFiletype Cloudformation = new AwsFiletype("cloudformation"); /// cloudformationSam public static readonly AwsFiletype CloudformationSam = new AwsFiletype("cloudformationSam"); /// codebuildBuildspec public static readonly AwsFiletype CodebuildBuildspec = new AwsFiletype("codebuildBuildspec"); /// ecsTask public static readonly AwsFiletype EcsTask = new AwsFiletype("ecsTask"); /// eventbridgeSchema public static readonly AwsFiletype EventbridgeSchema = new AwsFiletype("eventbridgeSchema"); /// iamPolicy public static readonly AwsFiletype IamPolicy = new AwsFiletype("iamPolicy"); /// samconfig public static readonly AwsFiletype Samconfig = new AwsFiletype("samconfig"); /// serverless public static readonly AwsFiletype Serverless = new AwsFiletype("serverless"); /// stepfunctionsAsl public static readonly AwsFiletype StepfunctionsAsl = new AwsFiletype("stepfunctionsAsl"); /// smithyModel public static readonly AwsFiletype SmithyModel = new AwsFiletype("smithyModel"); /// ssmDocument public static readonly AwsFiletype SsmDocument = new AwsFiletype("ssmDocument"); /// other public static readonly AwsFiletype Other = new AwsFiletype("other"); public AwsFiletype(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Presentation mode used in a CloudWatch Logs operation public struct CloudWatchLogsPresentation { private string _value; /// ui public static readonly CloudWatchLogsPresentation Ui = new CloudWatchLogsPresentation("ui"); /// text public static readonly CloudWatchLogsPresentation Text = new CloudWatchLogsPresentation("text"); public CloudWatchLogsPresentation(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// CloudWatch Logs entity public struct CloudWatchResourceType { private string _value; /// logGroup public static readonly CloudWatchResourceType LogGroup = new CloudWatchResourceType("logGroup"); /// logGroupList public static readonly CloudWatchResourceType LogGroupList = new CloudWatchResourceType("logGroupList"); /// logStream public static readonly CloudWatchResourceType LogStream = new CloudWatchResourceType("logStream"); public CloudWatchResourceType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The result of the operation public struct Result { private string _value; /// Succeeded public static readonly Result Succeeded = new Result("Succeeded"); /// Failed public static readonly Result Failed = new Result("Failed"); /// Cancelled public static readonly Result Cancelled = new Result("Cancelled"); public Result(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public struct Component { private string _value; /// editor public static readonly Component Editor = new Component("editor"); /// viewer public static readonly Component Viewer = new Component("viewer"); /// filesystem public static readonly Component Filesystem = new Component("filesystem"); /// explorer public static readonly Component Explorer = new Component("explorer"); /// infobar public static readonly Component Infobar = new Component("infobar"); public Component(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of IAM resource referenced by a metric or operation public struct IamResourceType { private string _value; /// group public static readonly IamResourceType Group = new IamResourceType("group"); /// role public static readonly IamResourceType Role = new IamResourceType("role"); /// user public static readonly IamResourceType User = new IamResourceType("user"); public IamResourceType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The Lambda Package type of the function public struct LambdaPackageType { private string _value; /// Zip public static readonly LambdaPackageType Zip = new LambdaPackageType("Zip"); /// Image public static readonly LambdaPackageType Image = new LambdaPackageType("Image"); public LambdaPackageType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Lambda architecture identifier public struct LambdaArchitecture { private string _value; /// x86_64 public static readonly LambdaArchitecture X8664 = new LambdaArchitecture("x86_64"); /// arm64 public static readonly LambdaArchitecture Arm64 = new LambdaArchitecture("arm64"); public LambdaArchitecture(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of modification performed on the credentials public struct CredentialModification { private string _value; /// Add public static readonly CredentialModification Add = new CredentialModification("Add"); /// Edit public static readonly CredentialModification Edit = new CredentialModification("Edit"); /// Delete public static readonly CredentialModification Delete = new CredentialModification("Delete"); public CredentialModification(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// High level categorization indicating the cause of the error public struct CausedBy { private string _value; /// user public static readonly CausedBy User = new CausedBy("user"); /// service public static readonly CausedBy Service = new CausedBy("service"); /// client public static readonly CausedBy Client = new CausedBy("client"); /// unknown public static readonly CausedBy Unknown = new CausedBy("unknown"); public CausedBy(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The lambda runtime public struct Runtime { private string _value; /// dotnetcore3.1 public static readonly Runtime Dotnetcore31 = new Runtime("dotnetcore3.1"); /// dotnetcore2.1 public static readonly Runtime Dotnetcore21 = new Runtime("dotnetcore2.1"); /// dotnet5.0 public static readonly Runtime Dotnet50 = new Runtime("dotnet5.0"); /// dotnet6 public static readonly Runtime Dotnet6 = new Runtime("dotnet6"); /// dotnet7 public static readonly Runtime Dotnet7 = new Runtime("dotnet7"); /// nodejs18.x public static readonly Runtime Nodejs18x = new Runtime("nodejs18.x"); /// nodejs16.x public static readonly Runtime Nodejs16x = new Runtime("nodejs16.x"); /// nodejs14.x public static readonly Runtime Nodejs14x = new Runtime("nodejs14.x"); /// nodejs12.x public static readonly Runtime Nodejs12x = new Runtime("nodejs12.x"); /// nodejs10.x public static readonly Runtime Nodejs10x = new Runtime("nodejs10.x"); /// nodejs8.10 public static readonly Runtime Nodejs810 = new Runtime("nodejs8.10"); /// ruby2.5 public static readonly Runtime Ruby25 = new Runtime("ruby2.5"); /// java8 public static readonly Runtime Java8 = new Runtime("java8"); /// java8.al2 public static readonly Runtime Java8al2 = new Runtime("java8.al2"); /// java11 public static readonly Runtime Java11 = new Runtime("java11"); /// go1.x public static readonly Runtime Go1x = new Runtime("go1.x"); /// python3.9 public static readonly Runtime Python39 = new Runtime("python3.9"); /// python3.8 public static readonly Runtime Python38 = new Runtime("python3.8"); /// python3.7 public static readonly Runtime Python37 = new Runtime("python3.7"); /// python3.6 public static readonly Runtime Python36 = new Runtime("python3.6"); /// python2.7 public static readonly Runtime Python27 = new Runtime("python2.7"); public Runtime(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Languages targeted by the schemas service public struct SchemaLanguage { private string _value; /// Java8 public static readonly SchemaLanguage Java8 = new SchemaLanguage("Java8"); /// Python36 public static readonly SchemaLanguage Python36 = new SchemaLanguage("Python36"); /// TypeScript3 public static readonly SchemaLanguage TypeScript3 = new SchemaLanguage("TypeScript3"); public SchemaLanguage(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Where credentials are stored or retrieved from public struct CredentialSourceId { private string _value; /// sharedCredentials public static readonly CredentialSourceId SharedCredentials = new CredentialSourceId("sharedCredentials"); /// sdkStore public static readonly CredentialSourceId SdkStore = new CredentialSourceId("sdkStore"); /// ec2 public static readonly CredentialSourceId Ec2 = new CredentialSourceId("ec2"); /// ecs public static readonly CredentialSourceId Ecs = new CredentialSourceId("ecs"); /// envVars public static readonly CredentialSourceId EnvVars = new CredentialSourceId("envVars"); /// awsId public static readonly CredentialSourceId AwsId = new CredentialSourceId("awsId"); /// iamIdentityCenter public static readonly CredentialSourceId IamIdentityCenter = new CredentialSourceId("iamIdentityCenter"); /// memory public static readonly CredentialSourceId Memory = new CredentialSourceId("memory"); /// other public static readonly CredentialSourceId Other = new CredentialSourceId("other"); public CredentialSourceId(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of credential that was selected public struct CredentialType { private string _value; /// staticProfile public static readonly CredentialType StaticProfile = new CredentialType("staticProfile"); /// staticSessionProfile public static readonly CredentialType StaticSessionProfile = new CredentialType("staticSessionProfile"); /// credentialProcessProfile public static readonly CredentialType CredentialProcessProfile = new CredentialType("credentialProcessProfile"); /// assumeRoleProfile public static readonly CredentialType AssumeRoleProfile = new CredentialType("assumeRoleProfile"); /// assumeMfaRoleProfile public static readonly CredentialType AssumeMfaRoleProfile = new CredentialType("assumeMfaRoleProfile"); /// assumeSamlRoleProfile public static readonly CredentialType AssumeSamlRoleProfile = new CredentialType("assumeSamlRoleProfile"); /// ssoProfile public static readonly CredentialType SsoProfile = new CredentialType("ssoProfile"); /// ecsMetatdata public static readonly CredentialType EcsMetatdata = new CredentialType("ecsMetatdata"); /// ec2Metadata public static readonly CredentialType Ec2Metadata = new CredentialType("ec2Metadata"); /// bearerToken public static readonly CredentialType BearerToken = new CredentialType("bearerToken"); /// other public static readonly CredentialType Other = new CredentialType("other"); public CredentialType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// How the database credentials are being retrieved public struct DatabaseCredentials { private string _value; /// IAM public static readonly DatabaseCredentials IAM = new DatabaseCredentials("IAM"); /// SecretsManager public static readonly DatabaseCredentials SecretsManager = new DatabaseCredentials("SecretsManager"); public DatabaseCredentials(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of an SQS Queue public struct SqsQueueType { private string _value; /// standard public static readonly SqsQueueType Standard = new SqsQueueType("standard"); /// fifo public static readonly SqsQueueType Fifo = new SqsQueueType("fifo"); public SqsQueueType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Dialog open trigger source location public struct InsightsDialogOpenSource { private string _value; /// explorer public static readonly InsightsDialogOpenSource Explorer = new InsightsDialogOpenSource("explorer"); /// resultsWindow public static readonly InsightsDialogOpenSource ResultsWindow = new InsightsDialogOpenSource("resultsWindow"); /// logGroup public static readonly InsightsDialogOpenSource LogGroup = new InsightsDialogOpenSource("logGroup"); public InsightsDialogOpenSource(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// User-selected time range type while starting an insights query public struct InsightsQueryTimeType { private string _value; /// relative public static readonly InsightsQueryTimeType Relative = new InsightsQueryTimeType("relative"); /// absolute public static readonly InsightsQueryTimeType Absolute = new InsightsQueryTimeType("absolute"); public InsightsQueryTimeType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// User-specified search string type while starting an insights query public struct InsightsQueryStringType { private string _value; /// insights public static readonly InsightsQueryStringType Insights = new InsightsQueryStringType("insights"); /// searchTerm public static readonly InsightsQueryStringType SearchTerm = new InsightsQueryStringType("searchTerm"); public InsightsQueryStringType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Ways to connect to an EC2 Instance public struct Ec2ConnectionType { private string _value; /// remoteDesktop public static readonly Ec2ConnectionType RemoteDesktop = new Ec2ConnectionType("remoteDesktop"); /// ssh public static readonly Ec2ConnectionType Ssh = new Ec2ConnectionType("ssh"); /// scp public static readonly Ec2ConnectionType Scp = new Ec2ConnectionType("scp"); public Ec2ConnectionType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Actions that can affect an EC2 Instance state public struct Ec2InstanceState { private string _value; /// start public static readonly Ec2InstanceState Start = new Ec2InstanceState("start"); /// stop public static readonly Ec2InstanceState Stop = new Ec2InstanceState("stop"); /// reboot public static readonly Ec2InstanceState Reboot = new Ec2InstanceState("reboot"); /// terminate public static readonly Ec2InstanceState Terminate = new Ec2InstanceState("terminate"); public Ec2InstanceState(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Infrastructure type used by ECS tasks and services public struct EcsLaunchType { private string _value; /// ec2 public static readonly EcsLaunchType Ec2 = new EcsLaunchType("ec2"); /// fargate public static readonly EcsLaunchType Fargate = new EcsLaunchType("fargate"); public EcsLaunchType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Type of execution selected while running the execute command public struct EcsExecuteCommandType { private string _value; /// command public static readonly EcsExecuteCommandType Command = new EcsExecuteCommandType("command"); /// shell public static readonly EcsExecuteCommandType Shell = new EcsExecuteCommandType("shell"); public EcsExecuteCommandType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The source content specified in the ECR deployment request public struct EcrDeploySource { private string _value; /// dockerfile public static readonly EcrDeploySource Dockerfile = new EcrDeploySource("dockerfile"); /// tag public static readonly EcrDeploySource Tag = new EcrDeploySource("tag"); public EcrDeploySource(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of fetch being performed public struct DynamoDbFetchType { private string _value; /// scan public static readonly DynamoDbFetchType Scan = new DynamoDbFetchType("scan"); /// query public static readonly DynamoDbFetchType Query = new DynamoDbFetchType("query"); public DynamoDbFetchType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of index being hit for the query/scan operation public struct DynamoDbIndexType { private string _value; /// primary public static readonly DynamoDbIndexType Primary = new DynamoDbIndexType("primary"); /// localSecondary public static readonly DynamoDbIndexType LocalSecondary = new DynamoDbIndexType("localSecondary"); /// globalSecondary public static readonly DynamoDbIndexType GlobalSecondary = new DynamoDbIndexType("globalSecondary"); public DynamoDbIndexType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of DynamoDB entity referenced by a metric or operation public struct DynamoDbTarget { private string _value; /// table public static readonly DynamoDbTarget Table = new DynamoDbTarget("table"); /// tableProperties public static readonly DynamoDbTarget TableProperties = new DynamoDbTarget("tableProperties"); /// tableStream public static readonly DynamoDbTarget TableStream = new DynamoDbTarget("tableStream"); public DynamoDbTarget(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The dynamic resource operation being executed public struct DynamicResourceOperation { private string _value; /// Create public static readonly DynamicResourceOperation Create = new DynamicResourceOperation("Create"); /// Update public static readonly DynamicResourceOperation Update = new DynamicResourceOperation("Update"); /// Delete public static readonly DynamicResourceOperation Delete = new DynamicResourceOperation("Delete"); public DynamicResourceOperation(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The experiment action taken action taken public struct ExperimentState { private string _value; /// activated public static readonly ExperimentState Activated = new ExperimentState("activated"); /// deactivated public static readonly ExperimentState Deactivated = new ExperimentState("deactivated"); public ExperimentState(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The tool being installed public struct ToolId { private string _value; /// session-manager-plugin public static readonly ToolId Sessionmanagerplugin = new ToolId("session-manager-plugin"); /// dotnet-lambda-deploy public static readonly ToolId Dotnetlambdadeploy = new ToolId("dotnet-lambda-deploy"); /// dotnet-deploy-cli public static readonly ToolId Dotnetdeploycli = new ToolId("dotnet-deploy-cli"); /// aws-cli public static readonly ToolId Awscli = new ToolId("aws-cli"); /// sam-cli public static readonly ToolId Samcli = new ToolId("sam-cli"); public ToolId(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of the Automated trigger to send request to CodeWhisperer service public struct CodewhispererAutomatedTriggerType { private string _value; /// KeyStrokeCount public static readonly CodewhispererAutomatedTriggerType KeyStrokeCount = new CodewhispererAutomatedTriggerType("KeyStrokeCount"); /// SpecialCharacters public static readonly CodewhispererAutomatedTriggerType SpecialCharacters = new CodewhispererAutomatedTriggerType("SpecialCharacters"); /// Enter public static readonly CodewhispererAutomatedTriggerType Enter = new CodewhispererAutomatedTriggerType("Enter"); /// IntelliSenseAcceptance public static readonly CodewhispererAutomatedTriggerType IntelliSenseAcceptance = new CodewhispererAutomatedTriggerType("IntelliSenseAcceptance"); /// IdleTime public static readonly CodewhispererAutomatedTriggerType IdleTime = new CodewhispererAutomatedTriggerType("IdleTime"); /// Classifier public static readonly CodewhispererAutomatedTriggerType Classifier = new CodewhispererAutomatedTriggerType("Classifier"); public CodewhispererAutomatedTriggerType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Completion Type of the inference results returned from CodeWhisperer model layer public struct CodewhispererCompletionType { private string _value; /// Line public static readonly CodewhispererCompletionType Line = new CodewhispererCompletionType("Line"); /// Block public static readonly CodewhispererCompletionType Block = new CodewhispererCompletionType("Block"); public CodewhispererCompletionType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Programming language of the CodeWhisperer recommendation public struct CodewhispererLanguage { private string _value; /// java public static readonly CodewhispererLanguage Java = new CodewhispererLanguage("java"); /// python public static readonly CodewhispererLanguage Python = new CodewhispererLanguage("python"); /// javascript public static readonly CodewhispererLanguage Javascript = new CodewhispererLanguage("javascript"); /// plaintext public static readonly CodewhispererLanguage Plaintext = new CodewhispererLanguage("plaintext"); /// jsx public static readonly CodewhispererLanguage Jsx = new CodewhispererLanguage("jsx"); /// typescript public static readonly CodewhispererLanguage Typescript = new CodewhispererLanguage("typescript"); /// tsx public static readonly CodewhispererLanguage Tsx = new CodewhispererLanguage("tsx"); /// csharp public static readonly CodewhispererLanguage Csharp = new CodewhispererLanguage("csharp"); /// c public static readonly CodewhispererLanguage C = new CodewhispererLanguage("c"); /// cpp public static readonly CodewhispererLanguage Cpp = new CodewhispererLanguage("cpp"); /// go public static readonly CodewhispererLanguage Go = new CodewhispererLanguage("go"); /// kotlin public static readonly CodewhispererLanguage Kotlin = new CodewhispererLanguage("kotlin"); /// php public static readonly CodewhispererLanguage Php = new CodewhispererLanguage("php"); /// ruby public static readonly CodewhispererLanguage Ruby = new CodewhispererLanguage("ruby"); /// rust public static readonly CodewhispererLanguage Rust = new CodewhispererLanguage("rust"); /// scala public static readonly CodewhispererLanguage Scala = new CodewhispererLanguage("scala"); /// shell public static readonly CodewhispererLanguage Shell = new CodewhispererLanguage("shell"); /// sql public static readonly CodewhispererLanguage Sql = new CodewhispererLanguage("sql"); public CodewhispererLanguage(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// the pre-defined set of values for runtime version of the language of CodeWhisperer recommendation public struct CodewhispererRuntime { private string _value; /// java8 public static readonly CodewhispererRuntime Java8 = new CodewhispererRuntime("java8"); /// java11 public static readonly CodewhispererRuntime Java11 = new CodewhispererRuntime("java11"); /// java16 public static readonly CodewhispererRuntime Java16 = new CodewhispererRuntime("java16"); /// python2 public static readonly CodewhispererRuntime Python2 = new CodewhispererRuntime("python2"); /// python3 public static readonly CodewhispererRuntime Python3 = new CodewhispererRuntime("python3"); /// javascript public static readonly CodewhispererRuntime Javascript = new CodewhispererRuntime("javascript"); /// unknown public static readonly CodewhispererRuntime Unknown = new CodewhispererRuntime("unknown"); public CodewhispererRuntime(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// User decision of each of the suggestion returned from CodeWhisperer public struct CodewhispererSuggestionState { private string _value; /// Accept public static readonly CodewhispererSuggestionState Accept = new CodewhispererSuggestionState("Accept"); /// Reject public static readonly CodewhispererSuggestionState Reject = new CodewhispererSuggestionState("Reject"); /// Discard public static readonly CodewhispererSuggestionState Discard = new CodewhispererSuggestionState("Discard"); /// Ignore public static readonly CodewhispererSuggestionState Ignore = new CodewhispererSuggestionState("Ignore"); /// Filter public static readonly CodewhispererSuggestionState Filter = new CodewhispererSuggestionState("Filter"); /// Unseen public static readonly CodewhispererSuggestionState Unseen = new CodewhispererSuggestionState("Unseen"); /// Empty public static readonly CodewhispererSuggestionState Empty = new CodewhispererSuggestionState("Empty"); public CodewhispererSuggestionState(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The type of the user trigger to send request to CodeWhisperer service public struct CodewhispererTriggerType { private string _value; /// OnDemand public static readonly CodewhispererTriggerType OnDemand = new CodewhispererTriggerType("OnDemand"); /// AutoTrigger public static readonly CodewhispererTriggerType AutoTrigger = new CodewhispererTriggerType("AutoTrigger"); public CodewhispererTriggerType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The aggregated user decision from previous trigger. public struct CodewhispererPreviousSuggestionState { private string _value; /// Accept public static readonly CodewhispererPreviousSuggestionState Accept = new CodewhispererPreviousSuggestionState("Accept"); /// Reject public static readonly CodewhispererPreviousSuggestionState Reject = new CodewhispererPreviousSuggestionState("Reject"); /// Discard public static readonly CodewhispererPreviousSuggestionState Discard = new CodewhispererPreviousSuggestionState("Discard"); /// Empty public static readonly CodewhispererPreviousSuggestionState Empty = new CodewhispererPreviousSuggestionState("Empty"); public CodewhispererPreviousSuggestionState(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Describes which parts of an application (that we know of) were synced to the cloud. "Code" resources follow the SAM spec: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-sync.html public struct SyncedResources { private string _value; /// AllResources public static readonly SyncedResources AllResources = new SyncedResources("AllResources"); /// CodeOnly public static readonly SyncedResources CodeOnly = new SyncedResources("CodeOnly"); public SyncedResources(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Type of Git repository provided to the Amazon CodeCatalyst dev environment create wizard public struct CodecatalystCreateDevEnvironmentRepoType { private string _value; /// linked public static readonly CodecatalystCreateDevEnvironmentRepoType Linked = new CodecatalystCreateDevEnvironmentRepoType("linked"); /// unlinked public static readonly CodecatalystCreateDevEnvironmentRepoType Unlinked = new CodecatalystCreateDevEnvironmentRepoType("unlinked"); /// none public static readonly CodecatalystCreateDevEnvironmentRepoType None = new CodecatalystCreateDevEnvironmentRepoType("none"); public CodecatalystCreateDevEnvironmentRepoType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// Locality of the Amazon CodeCatalyst update dev environment request (i.e., from the thin client or the local IDE instance) public struct CodecatalystUpdateDevEnvironmentLocationType { private string _value; /// remote public static readonly CodecatalystUpdateDevEnvironmentLocationType Remote = new CodecatalystUpdateDevEnvironmentLocationType("remote"); /// local public static readonly CodecatalystUpdateDevEnvironmentLocationType Local = new CodecatalystUpdateDevEnvironmentLocationType("local"); public CodecatalystUpdateDevEnvironmentLocationType(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Metric field type /// The id of the feature the user is interacting in. public struct FeatureId { private string _value; /// awsExplorer public static readonly FeatureId AwsExplorer = new FeatureId("awsExplorer"); /// codewhisperer public static readonly FeatureId Codewhisperer = new FeatureId("codewhisperer"); /// codecatalyst public static readonly FeatureId Codecatalyst = new FeatureId("codecatalyst"); public FeatureId(string value) { this._value = value; } public override string ToString() { return this._value; } } /// Copying an API Gateway remote URL public sealed class ApigatewayCopyUrl : BaseTelemetryEvent { /// The result of the operation public Result Result; public ApigatewayCopyUrl() { this.Passive = false; } } /// Invoking one simulated API Gateway call using the SAM cli public sealed class ApigatewayInvokeLocal : BaseTelemetryEvent { /// Optional - The lambda runtime public Runtime? Runtime; /// Optional - Any valid HTTP method (GET/HEAD/etc) public string HttpMethod; /// The result of the operation public Result Result; /// If the action was run in debug mode or not public bool Debug; /// Optional - Lambda architecture identifier public LambdaArchitecture? LambdaArchitecture; public ApigatewayInvokeLocal() { this.Passive = false; } } /// Calling a remote API Gateway public sealed class ApigatewayInvokeRemote : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - Any valid HTTP method (GET/HEAD/etc) public string HttpMethod; public ApigatewayInvokeRemote() { this.Passive = false; } } /// Called when starting a local API Gateway server simulator with SAM. Only called when starting it for long running testing, not for single invokes public sealed class ApigatewayStartLocalServer : BaseTelemetryEvent { /// The result of the operation public Result Result; public ApigatewayStartLocalServer() { this.Passive = false; } } /// Open the service URL in a browser public sealed class ApprunnerOpenServiceUrl : BaseTelemetryEvent { public ApprunnerOpenServiceUrl() { this.Passive = false; } } /// Copy the service URL public sealed class ApprunnerCopyServiceUrl : BaseTelemetryEvent { public ApprunnerCopyServiceUrl() { this.Passive = false; } } /// Create an App Runner service public sealed class ApprunnerCreateService : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The source artifact of an App Runner service public AppRunnerServiceSource AppRunnerServiceSource; public ApprunnerCreateService() { this.Passive = false; } } /// Pause a running App Runner service public sealed class ApprunnerPauseService : BaseTelemetryEvent { /// The result of the operation public Result Result; public ApprunnerPauseService() { this.Passive = false; } } /// Resume a paused App Runner service public sealed class ApprunnerResumeService : BaseTelemetryEvent { /// The result of the operation public Result Result; public ApprunnerResumeService() { this.Passive = false; } } /// Delete an App Runner service public sealed class ApprunnerDeleteService : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The current state of the App Runner service public AppRunnerServiceStatus? AppRunnerServiceStatus; public ApprunnerDeleteService() { this.Passive = false; } } /// Start a new deployment for an App Runner service public sealed class ApprunnerStartDeployment : BaseTelemetryEvent { /// The result of the operation public Result Result; public ApprunnerStartDeployment() { this.Passive = false; } } /// View the App Runner application logs (the logs for your running service) public sealed class ApprunnerViewApplicationLogs : BaseTelemetryEvent { public ApprunnerViewApplicationLogs() { this.Passive = false; } } /// View the App Runner service logs (the logs produced by App Runner) public sealed class ApprunnerViewServiceLogs : BaseTelemetryEvent { public ApprunnerViewServiceLogs() { this.Passive = false; } } /// Captures the result of adding a new connection in the 'Add New Connection' workflow public sealed class AuthAddConnection : BaseTelemetryEvent { /// The source of the operation public string Source; /// The id of the feature the user is interacting in. public FeatureId FeatureId; /// Where credentials are stored or retrieved from public CredentialSourceId CredentialSourceId; /// Whether this was an individual point or an aggregation of points. public bool IsAggregated; /// The result of the operation public Result Result; /// Optional - A generic number of attempts public System.Int32? Attempts; /// Optional - Comma delimited list of input fields that user has invalid inputs typed. e.g. 'profileName,accessKey,startUrl' public string InvalidInputFields; public AuthAddConnection() { this.Passive = false; } } /// The diff/change in Auth connections public sealed class AuthAddedConnections : BaseTelemetryEvent { /// The source of the operation public string Source; /// Current number of authentication connections the user has public int AuthConnectionsCount; /// Number of new authentication connections the user has public int NewAuthConnectionsCount; /// Comma delimited list of enabled auth connections public string EnabledAuthConnections; /// Comma delimited list of NEW enabled auth connections public string NewEnabledAuthConnections; /// A generic number of attempts public int Attempts; /// The result of the operation public Result Result; public AuthAddedConnections() { this.Passive = false; } } /// Called when user clicks yes or no to switch role upon adding new connection public sealed class AuthSwitchRoles : BaseTelemetryEvent { /// Current number of authentication connections the user has public int AuthConnectionsCount; /// User selection from a predefined menu (not user-provided input) public string UserChoice; public AuthSwitchRoles() { this.Passive = false; } } /// Copy the ARN of an AWS resource public sealed class AwsCopyArn : BaseTelemetryEvent { /// The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; public AwsCopyArn() { this.Passive = false; } } /// Delete an AWS resource public sealed class AwsDeleteResource : BaseTelemetryEvent { /// The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// The result of the operation public Result Result; public AwsDeleteResource() { this.Passive = false; } } /// Select a credentials profile public sealed class AwsSetCredentials : BaseTelemetryEvent { /// Optional - The type of credential that was selected public CredentialType? CredentialType; /// Optional - Where credentials are stored or retrieved from public CredentialSourceId? CredentialSourceId; public AwsSetCredentials() { this.Passive = false; } } /// A region change occurred public sealed class AwsSetRegion : BaseTelemetryEvent { public AwsSetRegion() { this.Passive = false; } } /// A partition change occurred public sealed class AwsSetPartition : BaseTelemetryEvent { /// The ID of the partition that was selected public string PartitionId; public AwsSetPartition() { this.Passive = false; } } /// Open the credentials file public sealed class AwsOpenCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; public AwsOpenCredentials() { this.Passive = false; } } /// Opens a url public sealed class AwsOpenUrl : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The url associated with a metric public string Url; /// Optional - The source of the operation public string Source; public AwsOpenUrl() { this.Passive = false; } } /// Save credentials public sealed class AwsSaveCredentials : BaseTelemetryEvent { public AwsSaveCredentials() { this.Passive = false; } } /// Modify credentials (e.g. Add, Edit, Delete) public sealed class AwsModifyCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of modification performed on the credentials public CredentialModification CredentialModification; /// The source of the operation public string Source; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; public AwsModifyCredentials() { this.Passive = false; } } /// Load credentials from a credential source public sealed class AwsLoadCredentials : BaseTelemetryEvent { /// Where credentials are stored or retrieved from public CredentialSourceId CredentialSourceId; public AwsLoadCredentials() { this.Passive = true; } } /// Create a new credentials file public sealed class AwsCreateCredentials : BaseTelemetryEvent { public AwsCreateCredentials() { this.Passive = false; } } /// Inject selected AWS credentials into a third-party run (e.g. RunConfiguration) public sealed class AwsInjectCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - A free-text field to record runtimes that may be separate from Lambda runtimes public string RuntimeString; public AwsInjectCredentials() { this.Passive = false; } } /// Validate credentials when selecting new credentials public sealed class AwsValidateCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The type of credential that was selected public CredentialType? CredentialType; /// Optional - Where credentials are stored or retrieved from public CredentialSourceId? CredentialSourceId; public AwsValidateCredentials() { this.Passive = true; } } /// Emitted when credentials are automatically refreshed by the AWS SDK or Toolkit public sealed class AwsRefreshCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The type of credential that was selected public CredentialType? CredentialType; /// Optional - Where credentials are stored or retrieved from public CredentialSourceId? CredentialSourceId; /// Optional - Length of time, in milliseconds, that an authentication session has lived for. Useful for determining how frequently a user has to reauthenticate. public System.Int32? SessionDuration; public AwsRefreshCredentials() { this.Passive = true; } } /// Called when a connection requires login using the browser public sealed class AwsLoginWithBrowser : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The type of credential that was selected public CredentialType? CredentialType; /// Optional - Where credentials are stored or retrieved from public CredentialSourceId? CredentialSourceId; public AwsLoginWithBrowser() { this.Passive = false; } } /// Open docs for the extension public sealed class AwsHelp : BaseTelemetryEvent { /// Optional - A generic name metadata public string Name; public AwsHelp() { this.Passive = false; } } /// Open the quickstart guide public sealed class AwsHelpQuickstart : BaseTelemetryEvent { /// The result of the operation public Result Result; public AwsHelpQuickstart() { this.Passive = true; } } /// Open the repo for the extension public sealed class AwsShowExtensionSource : BaseTelemetryEvent { public AwsShowExtensionSource() { this.Passive = false; } } /// Refresh the AWS explorer window public sealed class AwsRefreshExplorer : BaseTelemetryEvent { public AwsRefreshExplorer() { this.Passive = false; } } /// Expand a service root node in the AWS explorer window public sealed class AwsExpandExplorerNode : BaseTelemetryEvent { /// The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; public AwsExpandExplorerNode() { this.Passive = false; } } /// Report an issue with the plugin public sealed class AwsReportPluginIssue : BaseTelemetryEvent { public AwsReportPluginIssue() { this.Passive = false; } } /// Called when deploying an application to Elastic Beanstalk public sealed class BeanstalkDeploy : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Whether or not the deploy targets a new destination (true) or an existing destination (false) public bool InitialDeploy; /// Optional - A generic name metadata public string Name; /// Optional - Application framework being used public string Framework; /// Optional - Whether or not AWS X-Ray is enabled public System.Boolean? XrayEnabled; /// Optional - Whether or not Elastic Beanstalk enhanced health reporting and monitoring is being used public System.Boolean? EnhancedHealthEnabled; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - The source of the operation public string Source; public BeanstalkDeploy() { this.Passive = false; } } /// Called when user completes the Elastic Beanstalk publish wizard public sealed class BeanstalkPublishWizard : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - The source of the operation public string Source; public BeanstalkPublishWizard() { this.Passive = false; } } /// Open a window to view the status of the Beanstalk Application public sealed class BeanstalkOpenApplication : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkOpenApplication() { this.Passive = false; } } /// Open a window to view the status of the Beanstalk Environment public sealed class BeanstalkOpenEnvironment : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkOpenEnvironment() { this.Passive = false; } } /// Called when user deletes a Beanstalk application public sealed class BeanstalkDeleteApplication : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkDeleteApplication() { this.Passive = false; } } /// Called when user deletes a Beanstalk environment public sealed class BeanstalkDeleteEnvironment : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkDeleteEnvironment() { this.Passive = false; } } /// Restart application server for a Beanstalk environment public sealed class BeanstalkRestartApplication : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkRestartApplication() { this.Passive = false; } } /// Rebuild a Beanstalk environment public sealed class BeanstalkRebuildEnvironment : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkRebuildEnvironment() { this.Passive = false; } } /// Edit configuration of a Beanstalk environment public sealed class BeanstalkEditEnvironment : BaseTelemetryEvent { /// The result of the operation public Result Result; public BeanstalkEditEnvironment() { this.Passive = false; } } /// Open a window to view the status of the CloudFront Distribution public sealed class CloudfrontOpenDistribution : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontOpenDistribution() { this.Passive = false; } } /// Open a window to view the status of the CloudFront Streaming Distribution public sealed class CloudfrontOpenStreamingDistribution : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontOpenStreamingDistribution() { this.Passive = false; } } /// Open a window to view the Cloudfront Invalidation requests public sealed class CloudfrontOpenInvalidationRequest : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontOpenInvalidationRequest() { this.Passive = false; } } /// Called when user deletes a CloudFront Distribution public sealed class CloudfrontDeleteDistribution : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontDeleteDistribution() { this.Passive = false; } } /// Called when user deletes a CloudFront Streaming Distribution public sealed class CloudfrontDeleteStreamingDistribution : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontDeleteStreamingDistribution() { this.Passive = false; } } /// Create a CloudFront Distribution public sealed class CloudfrontCreateDistribution : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontCreateDistribution() { this.Passive = false; } } /// Create a CloudFront Streaming Distribution public sealed class CloudfrontCreateStreamingDistribution : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudfrontCreateStreamingDistribution() { this.Passive = false; } } /// Copy the ARN of a CloudWatch Logs entity public sealed class CloudwatchlogsCopyArn : BaseTelemetryEvent { /// The result of the operation public Result Result; /// CloudWatch Logs entity public CloudWatchResourceType CloudWatchResourceType; public CloudwatchlogsCopyArn() { this.Passive = false; } } /// Open a CloudWatch Logs entity. ServiceType and source indicate where the request came from (example: while viewing an ECS container) public sealed class CloudwatchlogsOpen : BaseTelemetryEvent { /// The result of the operation public Result Result; /// CloudWatch Logs entity public CloudWatchResourceType CloudWatchResourceType; /// Optional - Presentation mode used in a CloudWatch Logs operation public CloudWatchLogsPresentation? CloudWatchLogsPresentation; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - A text based filter was used public System.Boolean? HasTextFilter; /// Optional - A time based filter was used public System.Boolean? HasTimeFilter; /// The source of the operation public string Source; public CloudwatchlogsOpen() { this.Passive = false; } } /// Open the CloudWatch Logs group window. ServiceType indicates that it was opened from a different service (like directly from an ECS container) (Deprecated - use cloudwatchlogs_open) public sealed class CloudwatchlogsOpenGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; public CloudwatchlogsOpenGroup() { this.Passive = false; } } /// Open a CloudWatch Logs stream in the window. ServiceType indicates that it was opened from a different service (like directly from an ECS container) (Deprecated - use cloudwatchlogs_open) public sealed class CloudwatchlogsOpenStream : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; public CloudwatchlogsOpenStream() { this.Passive = false; } } /// Delete a CloudWatch Logs entity. public sealed class CloudwatchlogsDelete : BaseTelemetryEvent { /// The result of the operation public Result Result; /// CloudWatch Logs entity public CloudWatchResourceType CloudWatchResourceType; public CloudwatchlogsDelete() { this.Passive = false; } } /// Download a CloudWatch Logs entity. Value indicates the final size of the formatted stream in bytes. public sealed class CloudwatchlogsDownload : BaseTelemetryEvent { /// The result of the operation public Result Result; /// CloudWatch Logs entity public CloudWatchResourceType CloudWatchResourceType; public CloudwatchlogsDownload() { this.Passive = false; } } /// Download a stream to a file on disk. Value indicates the final size of the formatted stream. (Deprecated - use cloudwatchlogs_download) public sealed class CloudwatchlogsDownloadStreamToFile : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchlogsDownloadStreamToFile() { this.Passive = false; } } /// Download a stream to memory then open in an editor. public sealed class CloudwatchlogsOpenStreamInEditor : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchlogsOpenStreamInEditor() { this.Passive = false; } } /// Copy the currently open (possibly filtered) messages to an editor public sealed class CloudwatchlogsViewCurrentMessagesInEditor : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchlogsViewCurrentMessagesInEditor() { this.Passive = false; } } /// Word wrap events off/on public sealed class CloudwatchlogsWrapEvents : BaseTelemetryEvent { /// True if turned on, false if turned off public bool Enabled; public CloudwatchlogsWrapEvents() { this.Passive = false; } } /// Tail stream off/on public sealed class CloudwatchlogsTailStream : BaseTelemetryEvent { /// True if turned on, false if turned off public bool Enabled; public CloudwatchlogsTailStream() { this.Passive = false; } } /// Refresh a CloudWatch Logs entity public sealed class CloudwatchlogsRefresh : BaseTelemetryEvent { /// CloudWatch Logs entity public CloudWatchResourceType CloudWatchResourceType; public CloudwatchlogsRefresh() { this.Passive = false; } } /// Refresh group is pressed (Deprecated, use cloudwatchlogs_refresh) public sealed class CloudwatchlogsRefreshGroup : BaseTelemetryEvent { public CloudwatchlogsRefreshGroup() { this.Passive = false; } } /// Refresh stream is pressed (Deprecated, use cloudwatchlogs_refresh) public sealed class CloudwatchlogsRefreshStream : BaseTelemetryEvent { public CloudwatchlogsRefreshStream() { this.Passive = false; } } /// Filters a CloudWatch Logs entity. (Essentially a subset of cloudwatchlogs_open) public sealed class CloudwatchlogsFilter : BaseTelemetryEvent { /// The result of the operation public Result Result; /// CloudWatch Logs entity public CloudWatchResourceType CloudWatchResourceType; /// Optional - The source of the operation public string Source; /// Optional - A text based filter was used public System.Boolean? HasTextFilter; /// Optional - A time based filter was used public System.Boolean? HasTimeFilter; public CloudwatchlogsFilter() { this.Passive = false; } } /// Called when a stream is searched public sealed class CloudwatchlogsSearchStream : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchlogsSearchStream() { this.Passive = false; } } /// Called when a group is searched public sealed class CloudwatchlogsSearchGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchlogsSearchGroup() { this.Passive = false; } } /// Show event around a time period in ms specified by Value public sealed class CloudwatchlogsShowEventsAround : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchlogsShowEventsAround() { this.Passive = false; } } /// Called when creating a CloudFormation project public sealed class CloudformationCreateProject : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Generic name of a template public string TemplateName; public CloudformationCreateProject() { this.Passive = false; } } /// Called when deploying a CloudFormation template public sealed class CloudformationDeploy : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Whether or not the deploy targets a new destination (true) or an existing destination (false) public bool InitialDeploy; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - The source of the operation public string Source; public CloudformationDeploy() { this.Passive = false; } } /// Called when user completes the CloudFormation template publish wizard public sealed class CloudformationPublishWizard : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - The source of the operation public string Source; public CloudformationPublishWizard() { this.Passive = false; } } /// Open a CloudFormation stack in the stack viewer public sealed class CloudformationOpen : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudformationOpen() { this.Passive = false; } } /// A repo is cloned from CodeCommit public sealed class CodecommitCloneRepo : BaseTelemetryEvent { /// The result of the operation public Result Result; public CodecommitCloneRepo() { this.Passive = false; } } /// A repo is created in CodeCommit public sealed class CodecommitCreateRepo : BaseTelemetryEvent { /// The result of the operation public Result Result; public CodecommitCreateRepo() { this.Passive = false; } } /// A connection is established to CodeCommit to perform actions on repos public sealed class CodecommitSetCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The type of credential that was selected public CredentialType? CredentialType; public CodecommitSetCredentials() { this.Passive = true; } } /// Create a DynamoDB table public sealed class DynamodbCreateTable : BaseTelemetryEvent { /// The result of the operation public Result Result; public DynamodbCreateTable() { this.Passive = false; } } /// Delete a DynamoDB table public sealed class DynamodbDeleteTable : BaseTelemetryEvent { /// The result of the operation public Result Result; public DynamodbDeleteTable() { this.Passive = false; } } /// Modify a DynamoDB entity public sealed class DynamodbEdit : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of DynamoDB entity referenced by a metric or operation public DynamoDbTarget DynamoDbTarget; public DynamodbEdit() { this.Passive = false; } } /// Fetch records from a DynamoDB table in the table browser public sealed class DynamodbFetchRecords : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of fetch being performed public DynamoDbFetchType DynamoDbFetchType; /// Optional - The type of index being hit for the query/scan operation public DynamoDbIndexType? DynamoDbIndexType; public DynamodbFetchRecords() { this.Passive = false; } } /// Open a DynamoDB table in the table browser public sealed class DynamodbOpenTable : BaseTelemetryEvent { /// The result of the operation public Result Result; public DynamodbOpenTable() { this.Passive = false; } } /// View a DynamoDB entity public sealed class DynamodbView : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of DynamoDB entity referenced by a metric or operation public DynamoDbTarget DynamoDbTarget; public DynamodbView() { this.Passive = false; } } /// Change the state of an EC2 Instance public sealed class Ec2ChangeState : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Actions that can affect an EC2 Instance state public Ec2InstanceState Ec2InstanceState; public Ec2ChangeState() { this.Passive = false; } } /// Remove the private key of an EC2 Key Pair from internal storage public sealed class Ec2ClearPrivateKey : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2ClearPrivateKey() { this.Passive = false; } } /// Perform a connection to an EC2 Instance public sealed class Ec2ConnectToInstance : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Ways to connect to an EC2 Instance public Ec2ConnectionType Ec2ConnectionType; public Ec2ConnectToInstance() { this.Passive = false; } } /// Copy AMI image to another region public sealed class Ec2CopyAmiToRegion : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CopyAmiToRegion() { this.Passive = false; } } /// Create an image from an EC2 Instance public sealed class Ec2CreateAmi : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CreateAmi() { this.Passive = false; } } /// Create (allocate) an Elastic IP address public sealed class Ec2CreateElasticIp : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CreateElasticIp() { this.Passive = false; } } /// Create an EC2 Key Pair public sealed class Ec2CreateKeyPair : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CreateKeyPair() { this.Passive = false; } } /// Create an EC2 security group public sealed class Ec2CreateSecurityGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CreateSecurityGroup() { this.Passive = false; } } /// Create an EC2 volume snapshot public sealed class Ec2CreateSnapshot : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CreateSnapshot() { this.Passive = false; } } /// Create an EC2 volume public sealed class Ec2CreateVolume : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2CreateVolume() { this.Passive = false; } } /// Delete (de-register) an AMI image public sealed class Ec2DeleteAmi : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2DeleteAmi() { this.Passive = false; } } /// Delete (release) an Elastic IP address public sealed class Ec2DeleteElasticIp : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2DeleteElasticIp() { this.Passive = false; } } /// Delete an EC2 Key Pair public sealed class Ec2DeleteKeyPair : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2DeleteKeyPair() { this.Passive = false; } } /// Delete an EC2 security group public sealed class Ec2DeleteSecurityGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2DeleteSecurityGroup() { this.Passive = false; } } /// Delete an EC2 Volume Snapshot public sealed class Ec2DeleteSnapshot : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2DeleteSnapshot() { this.Passive = false; } } /// Delete an EC2 Volume public sealed class Ec2DeleteVolume : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2DeleteVolume() { this.Passive = false; } } /// Edit AMI image permissions public sealed class Ec2EditAmiPermission : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2EditAmiPermission() { this.Passive = false; } } /// Associate or disassociate an Elastic IP with an EC2 Instance public sealed class Ec2EditInstanceElasticIp : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - True if turned on, false if turned off public System.Boolean? Enabled; public Ec2EditInstanceElasticIp() { this.Passive = false; } } /// Adjust the shutdown behavior of an EC2 Instance public sealed class Ec2EditInstanceShutdownBehavior : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2EditInstanceShutdownBehavior() { this.Passive = false; } } /// Adjust the termination protection of an EC2 Instance public sealed class Ec2EditInstanceTerminationProtection : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - True if turned on, false if turned off public System.Boolean? Enabled; public Ec2EditInstanceTerminationProtection() { this.Passive = false; } } /// Adjust the instance type of an EC2 Instance public sealed class Ec2EditInstanceType : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2EditInstanceType() { this.Passive = false; } } /// Adjust an EC2 Instance's user data public sealed class Ec2EditInstanceUserData : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2EditInstanceUserData() { this.Passive = false; } } /// Alter an EC2 security group permission public sealed class Ec2EditSecurityGroupPermission : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2EditSecurityGroupPermission() { this.Passive = false; } } /// Attach (enabled = true) or detach a volume public sealed class Ec2EditVolumeAttachment : BaseTelemetryEvent { /// The result of the operation public Result Result; /// True if turned on, false if turned off public bool Enabled; public Ec2EditVolumeAttachment() { this.Passive = false; } } /// Save the private key of an EC2 Key Pair out to disk public sealed class Ec2ExportPrivateKey : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2ExportPrivateKey() { this.Passive = false; } } /// Store the private key of an EC2 Key Pair in internal storage public sealed class Ec2ImportPrivateKey : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2ImportPrivateKey() { this.Passive = false; } } /// Launch an EC2 Instance public sealed class Ec2LaunchInstance : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2LaunchInstance() { this.Passive = false; } } /// Open a window to view EC2 Instances public sealed class Ec2OpenInstances : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2OpenInstances() { this.Passive = false; } } /// Open a window to view EC2 AMIs public sealed class Ec2OpenAMIs : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2OpenAMIs() { this.Passive = false; } } /// Open a window to view EC2 Elastic IPs public sealed class Ec2OpenElasticIPs : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2OpenElasticIPs() { this.Passive = false; } } /// Open to view EC2 Key pairs public sealed class Ec2OpenKeyPairs : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2OpenKeyPairs() { this.Passive = false; } } /// Open a window to view EC2 Security Groups public sealed class Ec2OpenSecurityGroups : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2OpenSecurityGroups() { this.Passive = false; } } /// Open a window to view EC2 Volumes public sealed class Ec2OpenVolumes : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2OpenVolumes() { this.Passive = false; } } /// View the system log of an EC2 Instance public sealed class Ec2ViewInstanceSystemLog : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2ViewInstanceSystemLog() { this.Passive = false; } } /// Open to view status of an ECS Cluster public sealed class EcsOpenCluster : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsOpenCluster() { this.Passive = false; } } /// View an EC2 Instance's user data public sealed class Ec2ViewInstanceUserData : BaseTelemetryEvent { /// The result of the operation public Result Result; public Ec2ViewInstanceUserData() { this.Passive = false; } } /// Called when ECS execute command is enabled public sealed class EcsEnableExecuteCommand : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsEnableExecuteCommand() { this.Passive = false; } } /// Called when ECS execute command is disabled public sealed class EcsDisableExecuteCommand : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsDisableExecuteCommand() { this.Passive = false; } } /// Called when the ECS execute command is run public sealed class EcsRunExecuteCommand : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Type of execution selected while running the execute command public EcsExecuteCommandType EcsExecuteCommandType; public EcsRunExecuteCommand() { this.Passive = false; } } /// Called when the user copies the repository uri from a node public sealed class EcrCopyRepositoryUri : BaseTelemetryEvent { public EcrCopyRepositoryUri() { this.Passive = false; } } /// Called when the user copies the repository tag uri from a node. The tag uri is the repository uri + : + the tag name public sealed class EcrCopyTagUri : BaseTelemetryEvent { public EcrCopyTagUri() { this.Passive = false; } } /// Called when creating a new ECR repository public sealed class EcrCreateRepository : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcrCreateRepository() { this.Passive = false; } } /// Called when deleting an existing ECR repository public sealed class EcrDeleteRepository : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcrDeleteRepository() { this.Passive = false; } } /// Called when deleting a tag in an ECR repository. The operation is a batch operation by default, value represents the number of tags deleted. public sealed class EcrDeleteTags : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcrDeleteTags() { this.Passive = false; } } /// Called when deploying an image to ECR public sealed class EcrDeployImage : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The source content specified in the ECR deployment request public EcrDeploySource? EcrDeploySource; public EcrDeployImage() { this.Passive = false; } } /// Called when deploying a scheduled task to an ECS cluster public sealed class EcsDeployScheduledTask : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Infrastructure type used by ECS tasks and services public EcsLaunchType EcsLaunchType; public EcsDeployScheduledTask() { this.Passive = false; } } /// Called when deploying a service to an ECS cluster public sealed class EcsDeployService : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Infrastructure type used by ECS tasks and services public EcsLaunchType EcsLaunchType; public EcsDeployService() { this.Passive = false; } } /// Called when deploying a task to an ECS cluster public sealed class EcsDeployTask : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Infrastructure type used by ECS tasks and services public EcsLaunchType EcsLaunchType; public EcsDeployTask() { this.Passive = false; } } /// Called when user completes the ECS publish wizard public sealed class EcsPublishWizard : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsPublishWizard() { this.Passive = false; } } /// Open to view status of an ECS Repository public sealed class EcsOpenRepository : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsOpenRepository() { this.Passive = false; } } /// Called when user deletes an ECS service public sealed class EcsDeleteService : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsDeleteService() { this.Passive = false; } } /// Edit configuration of an ECS service public sealed class EcsEditService : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsEditService() { this.Passive = false; } } /// Delete an ECS cluster public sealed class EcsDeleteCluster : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsDeleteCluster() { this.Passive = false; } } /// Stop ECS task(s) public sealed class EcsStopTask : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsStopTask() { this.Passive = false; } } /// Delete ECS Scheduled task(s) public sealed class EcsDeleteScheduledTask : BaseTelemetryEvent { /// The result of the operation public Result Result; public EcsDeleteScheduledTask() { this.Passive = false; } } /// Called while submitting in-IDE feedback public sealed class FeedbackResult : BaseTelemetryEvent { /// The result of the operation public Result Result; public FeedbackResult() { this.Passive = false; } } /// Use authoring features such as autocompletion, syntax checking, and highlighting, for AWS filetypes (CFN, SAM, etc.). Emit this _once_ per file-editing session for a given file. Ideally this is emitted only if authoring features are used, rather than merely opening or touching a file. public sealed class FileEditAwsFile : BaseTelemetryEvent { /// The result of the operation public Result Result; /// AWS filetype kind public AwsFiletype AwsFiletype; /// Optional - Filename extension (examples: .txt, .yml, .yaml, .asl.yaml, ...), or empty string if the filename does not contain dot (.) between two chars. public string FilenameExt; public FileEditAwsFile() { this.Passive = false; } } /// Open a window to view/edit IAM Role Policy public sealed class IamOpenRole : BaseTelemetryEvent { /// The result of the operation public Result Result; public IamOpenRole() { this.Passive = false; } } /// Open a window to view/edit IAM Group Policy public sealed class IamOpenGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public IamOpenGroup() { this.Passive = false; } } /// Open a window to view/edit IAM User Configuration public sealed class IamOpenUser : BaseTelemetryEvent { /// The result of the operation public Result Result; public IamOpenUser() { this.Passive = false; } } /// Open a window to view/edit an IAM resource public sealed class IamOpen : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of IAM resource referenced by a metric or operation public IamResourceType IamResourceType; public IamOpen() { this.Passive = false; } } /// Create an IAM resource public sealed class IamCreate : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of IAM resource referenced by a metric or operation public IamResourceType IamResourceType; public IamCreate() { this.Passive = false; } } /// Delete an IAM resource public sealed class IamDelete : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of IAM resource referenced by a metric or operation public IamResourceType IamResourceType; public IamDelete() { this.Passive = false; } } /// Edits policy/configuration associated with an IAM resource public sealed class IamEdit : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of IAM resource referenced by a metric or operation public IamResourceType IamResourceType; public IamEdit() { this.Passive = false; } } /// Create Access Key for an IAM user public sealed class IamCreateUserAccessKey : BaseTelemetryEvent { /// The result of the operation public Result Result; public IamCreateUserAccessKey() { this.Passive = false; } } /// Delete Access Key for an IAM user public sealed class IamDeleteUserAccessKey : BaseTelemetryEvent { /// The result of the operation public Result Result; public IamDeleteUserAccessKey() { this.Passive = false; } } /// called when deleting lambdas remotely public sealed class LambdaDelete : BaseTelemetryEvent { /// The result of the operation public Result Result; public LambdaDelete() { this.Passive = false; } } /// Called when opening the local configuration of a Lambda to edit public sealed class LambdaConfigure : BaseTelemetryEvent { /// The result of the operation public Result Result; public LambdaConfigure() { this.Passive = false; } } /// Called when creating lambdas remotely public sealed class LambdaCreate : BaseTelemetryEvent { /// The lambda runtime public Runtime Runtime; public LambdaCreate() { this.Passive = false; } } /// Called when creating a lambda project public sealed class LambdaCreateProject : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Language used for the project public string Language; /// Generic name of a template public string TemplateName; /// Optional - A generic variant metadata public string Variant; public LambdaCreateProject() { this.Passive = false; } } /// Jump to a lambda handler from elsewhere public sealed class LambdaGoToHandler : BaseTelemetryEvent { /// The result of the operation public Result Result; public LambdaGoToHandler() { this.Passive = false; } } /// Called when creating lambdas remotely public sealed class LambdaEditFunction : BaseTelemetryEvent { /// Optional - If the operation was an update or not public System.Boolean? Update; /// The Lambda Package type of the function public LambdaPackageType LambdaPackageType; /// The result of the operation public Result Result; public LambdaEditFunction() { this.Passive = false; } } /// Called when invoking lambdas remotely public sealed class LambdaInvokeRemote : BaseTelemetryEvent { /// Optional - The lambda runtime public Runtime? Runtime; /// The result of the operation public Result Result; public LambdaInvokeRemote() { this.Passive = false; } } /// Called when invoking lambdas locally (with SAM in most toolkits) public sealed class LambdaInvokeLocal : BaseTelemetryEvent { /// Optional - The lambda runtime public Runtime? Runtime; /// Optional - A generic version metadata public string Version; /// The Lambda Package type of the function public LambdaPackageType LambdaPackageType; /// The result of the operation public Result Result; /// If the action was run in debug mode or not public bool Debug; /// Optional - Lambda architecture identifier public LambdaArchitecture? LambdaArchitecture; public LambdaInvokeLocal() { this.Passive = false; } } /// Called when importing a remote Lambda function public sealed class LambdaImport : BaseTelemetryEvent { /// Optional - The lambda runtime public Runtime? Runtime; /// The result of the operation public Result Result; public LambdaImport() { this.Passive = false; } } /// Called when updating a Lambda function's code outside the context of a SAM template public sealed class LambdaUpdateFunctionCode : BaseTelemetryEvent { /// Optional - The lambda runtime public Runtime? Runtime; /// The result of the operation public Result Result; public LambdaUpdateFunctionCode() { this.Passive = false; } } /// Called when deploying a Lambda Function public sealed class LambdaDeploy : BaseTelemetryEvent { /// The Lambda Package type of the function public LambdaPackageType LambdaPackageType; /// The result of the operation public Result Result; /// Whether or not the deploy targets a new destination (true) or an existing destination (false) public bool InitialDeploy; /// Optional - The lambda runtime public Runtime? Runtime; /// Optional - Language-specific identification. Examples: v4.6.1, netcoreapp3.1, nodejs12.x. Not AWS Lambda specific. Allows for additional details when other fields are opaque, such as the Lambda runtime value 'provided'. public string Platform; /// Optional - Lambda architecture identifier public LambdaArchitecture? LambdaArchitecture; /// Optional - Language used for the project public string Language; /// Optional - Whether or not AWS X-Ray is enabled public System.Boolean? XrayEnabled; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - The source of the operation public string Source; public LambdaDeploy() { this.Passive = false; } } /// Called when user completes the Lambda publish wizard public sealed class LambdaPublishWizard : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; /// Optional - The source of the operation public string Source; public LambdaPublishWizard() { this.Passive = false; } } /// Called when deleting a cloudformation stack public sealed class CloudformationDelete : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudformationDelete() { this.Passive = false; } } /// Called when getting IAM/SecretsManager credentials for a RDS database. Value represents how long it takes in ms. public sealed class RdsGetCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// How the database credentials are being retrieved public DatabaseCredentials DatabaseCredentials; /// The database engine used (mysql/postgres/redshift) public string DatabaseEngine; public RdsGetCredentials() { this.Passive = false; } } /// Open a window to view RDS DB Instances public sealed class RdsOpenInstances : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsOpenInstances() { this.Passive = false; } } /// Open a window to view RDS Security Groups public sealed class RdsOpenSecurityGroups : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsOpenSecurityGroups() { this.Passive = false; } } /// Open a window to view RDS Subnet Groups public sealed class RdsOpenSubnets : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsOpenSubnets() { this.Passive = false; } } /// Launch a RDS DB instance public sealed class RdsLaunchInstance : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsLaunchInstance() { this.Passive = false; } } /// Create a RDS security group public sealed class RdsCreateSecurityGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsCreateSecurityGroup() { this.Passive = false; } } /// Create a RDS subnet group public sealed class RdsCreateSubnetGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsCreateSubnetGroup() { this.Passive = false; } } /// Delete a RDS DB instance public sealed class RdsDeleteInstance : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsDeleteInstance() { this.Passive = false; } } /// Delete RDS security group(s) public sealed class RdsDeleteSecurityGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsDeleteSecurityGroup() { this.Passive = false; } } /// Delete RDS subnet group(s) public sealed class RdsDeleteSubnetGroup : BaseTelemetryEvent { /// The result of the operation public Result Result; public RdsDeleteSubnetGroup() { this.Passive = false; } } /// Called when creating a new database connection configuration to for a RDS database. In Datagrip we do not get this infromation if it is created directly, so this is only counts actions. public sealed class RdsCreateConnectionConfiguration : BaseTelemetryEvent { /// The result of the operation public Result Result; /// How the database credentials are being retrieved public DatabaseCredentials DatabaseCredentials; /// Optional - The database engine used (mysql/postgres/redshift) public string DatabaseEngine; public RdsCreateConnectionConfiguration() { this.Passive = false; } } /// Called when getting IAM/SecretsManager credentials for a Redshift database. Value represents how long it takes in ms. public sealed class RedshiftGetCredentials : BaseTelemetryEvent { /// The result of the operation public Result Result; /// How the database credentials are being retrieved public DatabaseCredentials DatabaseCredentials; public RedshiftGetCredentials() { this.Passive = false; } } /// Called when creating a new database connection configuration to for a Redshift database. In Datagrip we do not get this infromation if it is created directly, so this only counts actions. public sealed class RedshiftCreateConnectionConfiguration : BaseTelemetryEvent { /// The result of the operation public Result Result; /// How the database credentials are being retrieved public DatabaseCredentials DatabaseCredentials; public RedshiftCreateConnectionConfiguration() { this.Passive = false; } } /// Called when deploying a SAM application public sealed class SamDeploy : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - A generic version metadata public string Version; public SamDeploy() { this.Passive = false; } } /// Called when syncing a SAM application public sealed class SamSync : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Describes which parts of an application (that we know of) were synced to the cloud. "Code" resources follow the SAM spec: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-sync.html public SyncedResources SyncedResources; /// The Lambda Package type of the function public LambdaPackageType LambdaPackageType; /// Optional - A generic version metadata public string Version; public SamSync() { this.Passive = false; } } /// Called when initing a SAM application public sealed class SamInit : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The lambda runtime public Runtime? Runtime; /// Optional - Generic name of a template public string TemplateName; /// Optional - A generic version metadata public string Version; /// Optional - The Lambda Package type of the function public LambdaPackageType? LambdaPackageType; /// Optional - The name of the EventBridge Schema used in the operation public string EventBridgeSchema; /// Optional - Lambda architecture identifier public LambdaArchitecture? LambdaArchitecture; public SamInit() { this.Passive = false; } } /// Called when selecting an EventBridge schema to view public sealed class SchemasView : BaseTelemetryEvent { /// The result of the operation public Result Result; public SchemasView() { this.Passive = false; } } /// Called when downloading an EventBridge schema public sealed class SchemasDownload : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - Languages targeted by the schemas service public SchemaLanguage? SchemaLanguage; public SchemasDownload() { this.Passive = false; } } /// Called when searching an EventBridge schema registry public sealed class SchemasSearch : BaseTelemetryEvent { /// The result of the operation public Result Result; public SchemasSearch() { this.Passive = false; } } /// Called when starting the plugin public sealed class SessionStart : BaseTelemetryEvent { public SessionStart() { this.Passive = true; } } /// Called when stopping the IDE on a best effort basis public sealed class SessionEnd : BaseTelemetryEvent { public SessionEnd() { this.Passive = true; } } /// Copy the bucket name to the clipboard public sealed class S3CopyBucketName : BaseTelemetryEvent { public S3CopyBucketName() { this.Passive = false; } } /// Copy the path of a S3 object to the clipboard public sealed class S3CopyPath : BaseTelemetryEvent { public S3CopyPath() { this.Passive = false; } } /// Copy the S3 URI of a S3 object to the clipboard (e.g. s3://<bucketName>/abc.txt) public sealed class S3CopyUri : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3CopyUri() { this.Passive = false; } } /// Copy the URL of a S3 object to the clipboard public sealed class S3CopyUrl : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Whether or not it was a presigned request public bool Presigned; public S3CopyUrl() { this.Passive = false; } } /// Create a S3 bucket public sealed class S3CreateBucket : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3CreateBucket() { this.Passive = false; } } /// Delete a S3 bucket public sealed class S3DeleteBucket : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3DeleteBucket() { this.Passive = false; } } /// Delete S3 object(s) public sealed class S3DeleteObject : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The number of successful operations public System.Int32? SuccessCount; /// Optional - The number of failed operations public System.Int32? FailedCount; public S3DeleteObject() { this.Passive = false; } } /// Create an S3 folder public sealed class S3CreateFolder : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3CreateFolder() { this.Passive = false; } } /// Download S3 object(s) public sealed class S3DownloadObject : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The number of successful operations public System.Int32? SuccessCount; /// Optional - The number of failed operations public System.Int32? FailedCount; /// Optional - The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public Component? Component; public S3DownloadObject() { this.Passive = false; } } /// Download multiple S3 objects public sealed class S3DownloadObjects : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3DownloadObjects() { this.Passive = false; } } /// Upload S3 object(s) public sealed class S3UploadObject : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The number of successful operations public System.Int32? SuccessCount; /// Optional - The number of failed operations public System.Int32? FailedCount; /// Optional - The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public Component? Component; public S3UploadObject() { this.Passive = false; } } /// Rename a single S3 object public sealed class S3RenameObject : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3RenameObject() { this.Passive = false; } } /// Upload multiple S3 objects public sealed class S3UploadObjects : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3UploadObjects() { this.Passive = false; } } /// Open a view of a S3 bucket public sealed class S3OpenEditor : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3OpenEditor() { this.Passive = false; } } /// Edit or view one or more S3 objects in the IDE public sealed class S3EditObject : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public Component? Component; public S3EditObject() { this.Passive = false; } } /// Open a window to view S3 bucket properties public sealed class S3OpenBucketProperties : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3OpenBucketProperties() { this.Passive = false; } } /// Open a window to view S3 Multipart upload public sealed class S3OpenMultipartUpload : BaseTelemetryEvent { /// The result of the operation public Result Result; public S3OpenMultipartUpload() { this.Passive = false; } } /// The Toolkit has completed initialization public sealed class ToolkitInit : BaseTelemetryEvent { /// Optional - The result of the operation public Result? Result; public ToolkitInit() { this.Passive = true; } } /// View logs for the toolkit public sealed class ToolkitViewLogs : BaseTelemetryEvent { public ToolkitViewLogs() { this.Passive = false; } } /// Open an SQS queue. Initially opens to either the send message pane or poll messages pane. public sealed class SqsOpenQueue : BaseTelemetryEvent { /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsOpenQueue() { this.Passive = false; } } /// Create a new SQS queue public sealed class SqsCreateQueue : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The type of an SQS Queue public SqsQueueType? SqsQueueType; public SqsCreateQueue() { this.Passive = false; } } /// Send a message to an SQS queue public sealed class SqsSendMessage : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsSendMessage() { this.Passive = false; } } /// Delete one or more messages from an SQS queue. Value indicates the number of messages that we tried to delete. public sealed class SqsDeleteMessages : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsDeleteMessages() { this.Passive = false; } } /// Subscribe the queue to messages from an sns topic public sealed class SqsSubscribeSns : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsSubscribeSns() { this.Passive = false; } } /// Configure the queue as a trigger for a Lambda public sealed class SqsConfigureLambdaTrigger : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsConfigureLambdaTrigger() { this.Passive = false; } } /// Edit the Queue parameters public sealed class SqsEditQueueParameters : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsEditQueueParameters() { this.Passive = false; } } /// Purge all messages from the queue public sealed class SqsPurgeQueue : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The type of an SQS Queue public SqsQueueType SqsQueueType; public SqsPurgeQueue() { this.Passive = false; } } /// Called when user deletes a SQS queue public sealed class SqsDeleteQueue : BaseTelemetryEvent { /// The result of the operation public Result Result; /// Optional - The type of an SQS Queue public SqsQueueType? SqsQueueType; public SqsDeleteQueue() { this.Passive = false; } } /// Create a SNS Topic public sealed class SnsCreateTopic : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsCreateTopic() { this.Passive = false; } } /// Create a SNS Subscription public sealed class SnsCreateSubscription : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsCreateSubscription() { this.Passive = false; } } /// Open a window to view details of SNS Topic public sealed class SnsOpenTopic : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsOpenTopic() { this.Passive = false; } } /// Open a window to view SNS Subscriptions public sealed class SnsOpenSubscriptions : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsOpenSubscriptions() { this.Passive = false; } } /// Called when user deletes a SNS Topic public sealed class SnsDeleteTopic : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsDeleteTopic() { this.Passive = false; } } /// Called when user deletes SNS subscription(s) public sealed class SnsDeleteSubscription : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsDeleteSubscription() { this.Passive = false; } } /// Publish message to a SNS topic public sealed class SnsPublishMessage : BaseTelemetryEvent { /// The result of the operation public Result Result; public SnsPublishMessage() { this.Passive = false; } } /// Open a window to view VPC RouteTable public sealed class VpcOpenRouteTables : BaseTelemetryEvent { /// The result of the operation public Result Result; public VpcOpenRouteTables() { this.Passive = false; } } /// Open a window to view VPC Internet Gateway public sealed class VpcOpenGateways : BaseTelemetryEvent { /// The result of the operation public Result Result; public VpcOpenGateways() { this.Passive = false; } } /// Open a window to view VPC Network ACLs public sealed class VpcOpenACLs : BaseTelemetryEvent { /// The result of the operation public Result Result; public VpcOpenACLs() { this.Passive = false; } } /// Open a window to view VPC Subnets public sealed class VpcOpenSubnets : BaseTelemetryEvent { /// The result of the operation public Result Result; public VpcOpenSubnets() { this.Passive = false; } } /// Open a window to view VPC details public sealed class VpcOpenVPCs : BaseTelemetryEvent { /// The result of the operation public Result Result; public VpcOpenVPCs() { this.Passive = false; } } /// Open the insights query editor public sealed class CloudwatchinsightsOpenEditor : BaseTelemetryEvent { /// Dialog open trigger source location public InsightsDialogOpenSource InsightsDialogOpenSource; public CloudwatchinsightsOpenEditor() { this.Passive = false; } } /// Start an insights query public sealed class CloudwatchinsightsExecuteQuery : BaseTelemetryEvent { /// The result of the operation public Result Result; /// User-selected time range type while starting an insights query public InsightsQueryTimeType InsightsQueryTimeType; /// User-specified search string type while starting an insights query public InsightsQueryStringType InsightsQueryStringType; public CloudwatchinsightsExecuteQuery() { this.Passive = false; } } /// Save query parameters to AWS public sealed class CloudwatchinsightsSaveQuery : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchinsightsSaveQuery() { this.Passive = false; } } /// Retrieve list of available saved queries from AWS public sealed class CloudwatchinsightsRetrieveQuery : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchinsightsRetrieveQuery() { this.Passive = false; } } /// Get all details for the selected log record public sealed class CloudwatchinsightsOpenDetailedLogRecord : BaseTelemetryEvent { /// The result of the operation public Result Result; public CloudwatchinsightsOpenDetailedLogRecord() { this.Passive = false; } } /// The toolkit tried to retrieve blob data from a url public sealed class ToolkitGetExternalResource : BaseTelemetryEvent { /// The url associated with a metric public string Url; /// The result of the operation public Result Result; public ToolkitGetExternalResource() { this.Passive = true; } } /// The toolkit tried to show a notification message public sealed class ToolkitShowNotification : BaseTelemetryEvent { /// The result of the operation public Result Result; /// A generic ID metadata public string Id; /// The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public Component Component; public ToolkitShowNotification() { this.Passive = false; } } /// The toolkit tried to show an action. Source represents the notification that produced the action public sealed class ToolkitShowAction : BaseTelemetryEvent { /// The result of the operation public Result Result; /// A generic ID metadata public string Id; /// The source of the operation public string Source; /// The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public Component Component; public ToolkitShowAction() { this.Passive = false; } } /// A user invoked an action. Source represents the notification that produced the action public sealed class ToolkitInvokeAction : BaseTelemetryEvent { /// The result of the operation public Result Result; /// A generic ID metadata public string Id; /// The source of the operation public string Source; /// The IDE or OS component used for the action. (Examples: S3 download to filesystem, S3 upload from editor, ...) public Component Component; public ToolkitInvokeAction() { this.Passive = false; } } /// Open the dynamic resource model in the IDE public sealed class DynamicresourceGetResource : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The dynamic resource type being interacted with public string ResourceType; public DynamicresourceGetResource() { this.Passive = false; } } /// Expand a Resource Type node public sealed class DynamicresourceListResource : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The dynamic resource type being interacted with public string ResourceType; public DynamicresourceListResource() { this.Passive = false; } } /// Change the list of available dynamic resources in the AWS Explorer public sealed class DynamicresourceSelectResources : BaseTelemetryEvent { public DynamicresourceSelectResources() { this.Passive = false; } } /// Copy the dynamic resource identifier public sealed class DynamicresourceCopyIdentifier : BaseTelemetryEvent { /// The dynamic resource type being interacted with public string ResourceType; public DynamicresourceCopyIdentifier() { this.Passive = false; } } /// A dynamic resource mutation request completed public sealed class DynamicresourceMutateResource : BaseTelemetryEvent { /// The result of the operation public Result Result; /// The dynamic resource type being interacted with public string ResourceType; /// The dynamic resource operation being executed public DynamicResourceOperation DynamicResourceOperation; public DynamicresourceMutateResource() { this.Passive = false; } } /// An experiment was activated or deactivated in the Toolkit public sealed class AwsExperimentActivation : BaseTelemetryEvent { /// The id of the experiment being activated or deactivated public string ExperimentId; /// The experiment action taken action taken public ExperimentState ExperimentState; public AwsExperimentActivation() { this.Passive = false; } } /// An external tool was installed automatically public sealed class AwsToolInstallation : BaseTelemetryEvent { /// The tool being installed public ToolId ToolId; /// The result of the operation public Result Result; public AwsToolInstallation() { this.Passive = true; } } /// An setting was changed by users in the Toolkit. This metric can optionally provide the new state of the setting via settingState. public sealed class AwsModifySetting : BaseTelemetryEvent { /// The id of the setting being changed. Consistent namespace should be used for the id, e.g. codewhisperer_autoSuggestionActivation public string SettingId; /// Optional - The state of the setting being changed to. This should not be recorded for free-form settings like file-system paths. Instead, stick to things like flags, numbers, and enums. public string SettingState; public AwsModifySetting() { this.Passive = false; } } /// User clicked/activated a UI element. This does not necessarily have to be an explicit mouse click. Any user action that has the same behavior as a mouse click can use this event. public sealed class UiClick : BaseTelemetryEvent { /// An identifier associated with a UI element public string ElementId; public UiClick() { this.Passive = false; } } /// User requested that a resource be opened in the browser using the deeplink service public sealed class DeeplinkOpen : BaseTelemetryEvent { /// The source of the operation public string Source; /// The result of the operation public Result Result; /// Optional - The name of the AWS service acted on. These values come from the AWS SDK. To find them in the JAVA SDK search for SERVICE_NAME in each service client, or look for serviceId in metadata in the service2.json public string ServiceType; public DeeplinkOpen() { this.Passive = true; } } /// Percentage of user tokens against suggestions until 5 mins of time public sealed class CodewhispererCodePercentage : BaseTelemetryEvent { /// The metrics accepted on suggested CodeWhisperer code public int CodewhispererAcceptedTokens; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// The percentage of acceptance on suggested CodeWhisperer code on the overall code public int CodewhispererPercentage; /// The metrics generated by the user and acceptance of suggested CodeWhisperer code in the language CodeWhisperer supports. public int CodewhispererTotalTokens; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; /// The number of successful operations public int SuccessCount; public CodewhispererCodePercentage() { this.Passive = true; } } /// Client side invocation of the CodeWhisperer Security Scan public sealed class CodewhispererSecurityScan : BaseTelemetryEvent { /// How many lines of code being sent for security scan public int CodewhispererCodeScanLines; /// Optional - The ID of the security scan job public string CodewhispererCodeScanJobId; /// Optional - The total size in bytes of customer project to perform security scan on public System.Double? CodewhispererCodeScanProjectBytes; /// The uncompressed payload size in bytes of the source files in customer project context sent for security scan public int CodewhispererCodeScanSrcPayloadBytes; /// Optional - The uncompressed payload size in bytes of the build files in customer project context sent for security scan public System.Int32? CodewhispererCodeScanBuildPayloadBytes; /// The compressed payload size of source files in bytes of customer project context sent for security scan public int CodewhispererCodeScanSrcZipFileBytes; /// Optional - The compressed payload size of built jars in bytes of customer project context sent for security scan. This is only applicable for Java project public System.Int32? CodewhispererCodeScanBuildZipFileBytes; /// The number of security issues been detected public int CodewhispererCodeScanTotalIssues; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// Time taken for context truncation in milliseconds public int ContextTruncationDuration; /// Time taken to fetch the upload URL and upload the artifacts in milliseconds public int ArtifactsUploadDuration; /// Time taken to invoke code scan service APIs in milliseconds public int CodeScanServiceInvocationsDuration; /// The result of the operation public Result Result; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; public CodewhispererSecurityScan() { this.Passive = false; } } /// Client side invocation of the CodeWhisperer service for suggestion public sealed class CodewhispererServiceInvocation : BaseTelemetryEvent { /// Optional - The type of the Automated trigger to send request to CodeWhisperer service public CodewhispererAutomatedTriggerType? CodewhispererAutomatedTriggerType; /// Optional - Completion Type of the inference results returned from CodeWhisperer model layer public CodewhispererCompletionType? CodewhispererCompletionType; /// cursor location offset in the editor when invoking CodeWhisperer for recommendation public int CodewhispererCursorOffset; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// Optional - The last index of recommendation from a particular response public System.Int32? CodewhispererLastSuggestionIndex; /// The line number of the cursor when the event happens public int CodewhispererLineNumber; /// Optional - The ID of the request to CodeWhisperer service public string CodewhispererRequestId; /// Optional - the pre-defined set of values for runtime version of the language of CodeWhisperer recommendation public CodewhispererRuntime? CodewhispererRuntime; /// Optional - the original (free-text) of the runtime version of the language of CodeWhisperer recommendation public string CodewhispererRuntimeSource; /// Optional - The unique identifier for a CodeWhisperer session(which can contain multiple requests) public string CodewhispererSessionId; /// Optional - If the supplemental context fetching timeout or not public System.Boolean? CodewhispererSupplementalContextTimeout; /// Optional - If the supplemental context is for test file(UTG) or src file public System.Boolean? CodewhispererSupplementalContextIsUtg; /// Optional - Latency to obtain supplemental context public System.Double? CodewhispererSupplementalContextLatency; /// Optional - Length of codewhisperer supplemental context extracted from files public System.Int32? CodewhispererSupplementalContextLength; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// The result of the operation public Result Result; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; /// Optional - Whether Import Recommendation is enabled. public System.Boolean? CodewhispererImportRecommendationEnabled; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; public CodewhispererServiceInvocation() { this.Passive = false; } } /// Client side invocation blocked by another invocation in progress public sealed class CodewhispererBlockedInvocation : BaseTelemetryEvent { /// Optional - The type of the Automated trigger to send request to CodeWhisperer service public CodewhispererAutomatedTriggerType? CodewhispererAutomatedTriggerType; /// cursor location offset in the editor when invoking CodeWhisperer for recommendation public int CodewhispererCursorOffset; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// The line number of the cursor when the event happens public int CodewhispererLineNumber; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; public CodewhispererBlockedInvocation() { this.Passive = false; } } /// User acceptance or rejection of each suggestion returned by the CodeWhisperer service request public sealed class CodewhispererUserDecision : BaseTelemetryEvent { /// Completion Type of the inference results returned from CodeWhisperer model layer public CodewhispererCompletionType CodewhispererCompletionType; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// Optional - The number of recommendations received so far when user makes a decision public System.Int32? CodewhispererPaginationProgress; /// The ID of the request to CodeWhisperer service public string CodewhispererRequestId; /// Optional - the pre-defined set of values for runtime version of the language of CodeWhisperer recommendation public CodewhispererRuntime? CodewhispererRuntime; /// Optional - the original (free-text) of the runtime version of the language of CodeWhisperer recommendation public string CodewhispererRuntimeSource; /// Optional - The unique identifier for a CodeWhisperer session(which can contain multiple requests) public string CodewhispererSessionId; /// The index for each suggestion, respectively, in the list of suggestions returned from service invocation public int CodewhispererSuggestionIndex; /// Number of references the particular suggestion is referenced with. public int CodewhispererSuggestionReferenceCount; /// Optional - The list of unique license names for a particular suggestion public string CodewhispererSuggestionReferences; /// Optional - The number of import statements included with recommendation. public System.Int32? CodewhispererSuggestionImportCount; /// User decision of each of the suggestion returned from CodeWhisperer public CodewhispererSuggestionState CodewhispererSuggestionState; /// Optional - If the supplemental context fetching timeout or not public System.Boolean? CodewhispererSupplementalContextTimeout; /// Optional - If the supplemental context is for test file(UTG) or src file public System.Boolean? CodewhispererSupplementalContextIsUtg; /// Optional - Length of codewhisperer supplemental context extracted from files public System.Int32? CodewhispererSupplementalContextLength; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; public CodewhispererUserDecision() { this.Passive = false; } } /// User decision aggregated at trigger level public sealed class CodewhispererUserTriggerDecision : BaseTelemetryEvent { /// Optional - The unique identifier for a CodeWhisperer session(which can contain multiple requests) public string CodewhispererSessionId; /// The request id of the first request in a paginated session. public string CodewhispererFirstRequestId; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; /// Optional - If user has accepted only part of the recommendation or not. public System.Boolean? CodewhispererIsPartialAcceptance; /// Optional - The number of times the user accept part of the recommendations. public System.Int32? CodewhispererPartialAcceptanceCount; /// Optional - The number of characters user has accepted through partial acceptance. public System.Int32? CodewhispererCharactersAccepted; /// Optional - The number of characters originally recommended to the user in partial acceptance scenario. public System.Int32? CodewhispererCharactersRecommended; /// Completion Type of the inference results returned from CodeWhisperer model layer public CodewhispererCompletionType CodewhispererCompletionType; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// Optional - The type of the Automated trigger to send request to CodeWhisperer service public CodewhispererAutomatedTriggerType? CodewhispererAutomatedTriggerType; /// The line number of the cursor when the event happens public int CodewhispererLineNumber; /// cursor location offset in the editor when invoking CodeWhisperer for recommendation public int CodewhispererCursorOffset; /// The total number of code suggestions in a paginated session. public int CodewhispererSuggestionCount; /// The number of import statements included with recommendation. public int CodewhispererSuggestionImportCount; /// Optional - The time that recommendations are shown to the user in a paginated session. public System.Double? CodewhispererTotalShownTime; /// Optional - The character that triggered recommendation for special characters trigger. public string CodewhispererTriggerCharacter; /// The length of additional characters inputted by the user since the invocation. public int CodewhispererTypeaheadLength; /// Optional - The time from last document change to the current document change. public System.Double? CodewhispererTimeSinceLastDocumentChange; /// Optional - The time from last user decision to current invocation. public System.Double? CodewhispererTimeSinceLastUserDecision; /// Optional - The time from user trigger to the first recommendation is received. public System.Double? CodewhispererTimeToFirstRecommendation; /// Optional - The aggregated user decision from previous trigger. public CodewhispererPreviousSuggestionState? CodewhispererPreviousSuggestionState; /// User decision of each of the suggestion returned from CodeWhisperer public CodewhispererSuggestionState CodewhispererSuggestionState; /// Optional - The result from Classifier trigger. public System.Double? CodewhispererClassifierResult; /// Optional - If the supplemental context fetching timeout or not public System.Boolean? CodewhispererSupplementalContextTimeout; /// Optional - If the supplemental context is for test file(UTG) or src file public System.Boolean? CodewhispererSupplementalContextIsUtg; /// Optional - Length of codewhisperer supplemental context extracted from files public System.Int32? CodewhispererSupplementalContextLength; /// Optional - The threshold of Classifier trigger. public System.Double? CodewhispererClassifierThreshold; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; public CodewhispererUserTriggerDecision() { this.Passive = false; } } /// Percentage of user modifications for the selected suggestion until a fixed period of time public sealed class CodewhispererUserModification : BaseTelemetryEvent { /// Completion Type of the inference results returned from CodeWhisperer model layer public CodewhispererCompletionType CodewhispererCompletionType; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// The percentage of user modifications on the suggested code public double CodewhispererModificationPercentage; /// The ID of the request to CodeWhisperer service public string CodewhispererRequestId; /// Optional - the pre-defined set of values for runtime version of the language of CodeWhisperer recommendation public CodewhispererRuntime? CodewhispererRuntime; /// Optional - the original (free-text) of the runtime version of the language of CodeWhisperer recommendation public string CodewhispererRuntimeSource; /// Optional - The unique identifier for a CodeWhisperer session(which can contain multiple requests) public string CodewhispererSessionId; /// The index for each suggestion, respectively, in the list of suggestions returned from service invocation public int CodewhispererSuggestionIndex; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; public CodewhispererUserModification() { this.Passive = false; } } /// The duration from user last modification to the first recommendation shown in milliseconds public sealed class CodewhispererPerceivedLatency : BaseTelemetryEvent { /// The ID of the request to CodeWhisperer service public string CodewhispererRequestId; /// Optional - The unique identifier for a CodeWhisperer session(which can contain multiple requests) public string CodewhispererSessionId; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// Completion Type of the inference results returned from CodeWhisperer model layer public CodewhispererCompletionType CodewhispererCompletionType; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; public CodewhispererPerceivedLatency() { this.Passive = false; } } /// The latency from each CodeWhisperer components in milliseconds public sealed class CodewhispererClientComponentLatency : BaseTelemetryEvent { /// The ID of the request to CodeWhisperer service public string CodewhispererRequestId; /// The unique identifier for a CodeWhisperer session(which can contain multiple requests) public string CodewhispererSessionId; /// The time it takes for the plugin to make the first GenerateCompletions API call after the user performs the CW trigger action. public double CodewhispererPreprocessingLatency; /// The time it takes to get the Sono/SSO credential for the invocation. public double CodewhispererCredentialFetchingLatency; /// The time it takes for the first completions to be displayed in the IDE after the plugin receives the initial Completions object. public double CodewhispererPostprocessingLatency; /// The time it takes for the response to be received after the plugin makes a first GenerateCompletions API call. public double CodewhispererFirstCompletionLatency; /// The time it takes for the first completion to be shown in the IDE after the user performs the CW trigger action. public double CodewhispererEndToEndLatency; /// The time it takes for the last GenerateCompletions response to be received after plugin makes a first call to GenerateCompletions API. public double CodewhispererAllCompletionsLatency; /// Completion Type of the inference results returned from CodeWhisperer model layer public CodewhispererCompletionType CodewhispererCompletionType; /// The type of the user trigger to send request to CodeWhisperer service public CodewhispererTriggerType CodewhispererTriggerType; /// Programming language of the CodeWhisperer recommendation public CodewhispererLanguage CodewhispererLanguage; /// Optional - The start URL of current SSO connection public string CredentialStartUrl; /// The user group identifier we assign to the customer and it should be unique identifier across different IDE platforms, i.e. Classifier, CrossFile etc. public string CodewhispererUserGroup; public CodewhispererClientComponentLatency() { this.Passive = true; } } /// Create an Amazon CodeCatalyst Dev Environment public sealed class CodecatalystCreateDevEnvironment : BaseTelemetryEvent { /// Opaque AWS Builder ID identifier public string UserId; /// The result of the operation public Result Result; /// Optional - Type of Git repository provided to the Amazon CodeCatalyst dev environment create wizard public CodecatalystCreateDevEnvironmentRepoType? CodecatalystCreateDevEnvironmentRepoType; public CodecatalystCreateDevEnvironment() { this.Passive = false; } } /// Update properties of a Amazon CodeCatalyst Dev Environment public sealed class CodecatalystUpdateDevEnvironmentSettings : BaseTelemetryEvent { /// Opaque AWS Builder ID identifier public string UserId; /// The result of the operation public Result Result; /// Locality of the Amazon CodeCatalyst update dev environment request (i.e., from the thin client or the local IDE instance) public CodecatalystUpdateDevEnvironmentLocationType CodecatalystUpdateDevEnvironmentLocationType; public CodecatalystUpdateDevEnvironmentSettings() { this.Passive = false; } } /// Trigger a devfile update on a Amazon CodeCatalyst dev environment public sealed class CodecatalystUpdateDevfile : BaseTelemetryEvent { /// Opaque AWS Builder ID identifier public string UserId; /// The result of the operation public Result Result; public CodecatalystUpdateDevfile() { this.Passive = false; } } /// Clone a Amazon CodeCatalyst code repository locally public sealed class CodecatalystLocalClone : BaseTelemetryEvent { /// Opaque AWS Builder ID identifier public string UserId; /// The result of the operation public Result Result; public CodecatalystLocalClone() { this.Passive = false; } } /// Connect to a Amazon CodeCatalyst dev environment public sealed class CodecatalystConnect : BaseTelemetryEvent { /// Opaque AWS Builder ID identifier public string UserId; /// The result of the operation public Result Result; public CodecatalystConnect() { this.Passive = false; } } /// Workflow statistic for connecting to a dev environment public sealed class CodecatalystDevEnvironmentWorkflowStatistic : BaseTelemetryEvent { /// Opaque AWS Builder ID identifier public string UserId; /// The result of the operation public Result Result; /// Workflow step name public string CodecatalystDevEnvironmentWorkflowStep; /// Optional - Workflow error name public string CodecatalystDevEnvironmentWorkflowError; public CodecatalystDevEnvironmentWorkflowStatistic() { this.Passive = true; } } }