diff --git a/.gitignore b/.gitignore index 81918dbcc..bac891f7c 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,4 @@ build # C# Telemetry Client Generator Related telemetry/csharp/buildtemp/** telemetry/csharp/AwsToolkit.Telemetry.SDK/Generated/** -telemetry/csharp/client-generator-inputs/telemetry-2017-07-25.normal.json +telemetry/csharp/client-generator-inputs/telemetry-2017-07-25.normal.json \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode-supplemental.txt b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode-supplemental.txt index 02840a330..86468187f 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode-supplemental.txt +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode-supplemental.txt @@ -66,6 +66,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum = datum.InvokeTransform(transformDatum); @@ -121,6 +122,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum = datum.InvokeTransform(transformDatum); @@ -176,6 +178,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum.AddMetadata("attempts", payload.Attempts); @@ -239,6 +242,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum.AddMetadata("attempts", payload.Attempts); @@ -302,6 +306,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); if (payload.Attempts.HasValue) { @@ -374,6 +379,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum = datum.InvokeTransform(transformDatum); @@ -389,7 +395,7 @@ namespace Test } /// Emits milliseconds - public sealed class EmitSomeIntMs : BaseTelemetryEvent + public sealed class EmitSomeIntMs : BaseGeneratedTelemetryEvent { public EmitSomeIntMs() @@ -399,7 +405,7 @@ namespace Test } /// Emits something without a unit defined - public sealed class EmitNoUnit : BaseTelemetryEvent + public sealed class EmitNoUnit : BaseGeneratedTelemetryEvent { public EmitNoUnit() @@ -409,7 +415,7 @@ namespace Test } /// Emits a bunch of metadata varieties - public sealed class EmitSomeBigBlob : BaseTelemetryEvent + public sealed class EmitSomeBigBlob : BaseGeneratedTelemetryEvent { /// A generic number of attempts @@ -431,7 +437,7 @@ namespace Test } /// Emits a bunch of metadata varieties - required not set - public sealed class EmitSomeBigBlob2 : BaseTelemetryEvent + public sealed class EmitSomeBigBlob2 : BaseGeneratedTelemetryEvent { /// A generic number of attempts @@ -453,7 +459,7 @@ namespace Test } /// Emits a bunch of optional metadata varieties - public sealed class EmitSomeBigOptionalBlob : BaseTelemetryEvent + public sealed class EmitSomeBigOptionalBlob : BaseGeneratedTelemetryEvent { /// Optional - A generic number of attempts @@ -475,7 +481,7 @@ namespace Test } /// Emit a passive metric - public sealed class EmitPassive : BaseTelemetryEvent + public sealed class EmitPassive : BaseGeneratedTelemetryEvent { public EmitPassive() diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode.txt b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode.txt index 1d5c35f4e..18bdba34c 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode.txt +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator.Tests/test-data/expectedCode.txt @@ -66,6 +66,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum = datum.InvokeTransform(transformDatum); @@ -121,6 +122,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum = datum.InvokeTransform(transformDatum); @@ -176,6 +178,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum.AddMetadata("attempts", payload.Attempts); @@ -239,6 +242,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum.AddMetadata("attempts", payload.Attempts); @@ -302,6 +306,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); if (payload.Attempts.HasValue) { @@ -374,6 +379,7 @@ namespace Test datum.AddMetadata("duration", payload.Duration.Value); } datum.AddMetadata("locale", payload.Locale); + datum.AddResultToMetadata(payload.Result); datum = datum.InvokeTransform(transformDatum); @@ -413,7 +419,7 @@ namespace Test } /// Emits milliseconds - public sealed class EmitSomeIntMs : BaseTelemetryEvent + public sealed class EmitSomeIntMs : BaseGeneratedTelemetryEvent { public EmitSomeIntMs() @@ -423,7 +429,7 @@ namespace Test } /// Emits something without a unit defined - public sealed class EmitNoUnit : BaseTelemetryEvent + public sealed class EmitNoUnit : BaseGeneratedTelemetryEvent { public EmitNoUnit() @@ -433,7 +439,7 @@ namespace Test } /// Emits a bunch of metadata varieties - public sealed class EmitSomeBigBlob : BaseTelemetryEvent + public sealed class EmitSomeBigBlob : BaseGeneratedTelemetryEvent { /// A generic number of attempts @@ -455,7 +461,7 @@ namespace Test } /// Emits a bunch of metadata varieties - required not set - public sealed class EmitSomeBigBlob2 : BaseTelemetryEvent + public sealed class EmitSomeBigBlob2 : BaseGeneratedTelemetryEvent { /// A generic number of attempts @@ -477,7 +483,7 @@ namespace Test } /// Emits a bunch of optional metadata varieties - public sealed class EmitSomeBigOptionalBlob : BaseTelemetryEvent + public sealed class EmitSomeBigOptionalBlob : BaseGeneratedTelemetryEvent { /// Optional - A generic number of attempts @@ -499,7 +505,7 @@ namespace Test } /// Emit a passive metric - public sealed class EmitPassive : BaseTelemetryEvent + public sealed class EmitPassive : BaseGeneratedTelemetryEvent { public EmitPassive() diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/AwsToolkit.Telemetry.Events.Generator.csproj b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/AwsToolkit.Telemetry.Events.Generator.csproj index d0e66b1d8..70e11cddc 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/AwsToolkit.Telemetry.Events.Generator.csproj +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/AwsToolkit.Telemetry.Events.Generator.csproj @@ -1,8 +1,9 @@ - + Exe net8.0 + Amazon.AwsToolkit.Telemetry.Events.Generator Amazon.AwsToolkit.Telemetry.Events.Generator Amazon Web Services diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs index 20d8eb8c9..9e4d1ab40 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Generator/DefinitionsBuilder.cs @@ -19,12 +19,14 @@ public class DefinitionsBuilder private const string MetadataEntryFullName = "MetadataEntry"; private const string MetricDatumFullName = "MetricDatum"; private const string AddMetadataMethodName = "AddMetadata"; + private const string AddResultToMetadataMethodName = "AddResultToMetadata"; private const string InvokeTransformMethodName = "InvokeTransform"; // contains metadata fields that should be skipped when generating code. - // These fields are covered by the class BaseTelemetryEvent + // These fields are covered by the BaseTelemetryEvent and BaseGeneratedTelemetryEvent classes private static readonly string[] ImplicitFields = { + "result", "reason", "errorCode", "causedBy", @@ -283,7 +285,7 @@ private CodeTypeDeclaration CreateMetricDataClass(Metric metric) TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed }; - cls.BaseTypes.Add("BaseTelemetryEvent"); + cls.BaseTypes.Add("BaseGeneratedTelemetryEvent"); if (!string.IsNullOrWhiteSpace(metric.description)) { @@ -455,7 +457,7 @@ private CodeMemberMethod CreateRecordMetricMethodByDataClass(Metric metric) // { // datum.AddMetadata("duration", payload.Duration.Value); // } - var payloadDuration= new CodeFieldReferenceExpression(payload, "Duration"); + var payloadDuration = new CodeFieldReferenceExpression(payload, "Duration"); var hasValueDuration = new CodeFieldReferenceExpression(payloadDuration, "HasValue"); var durationMetadata = new CodeMethodInvokeExpression(datumAddData, new CodePrimitiveExpression("duration"), new CodeFieldReferenceExpression(payloadDuration, "Value")); @@ -467,6 +469,12 @@ private CodeMemberMethod CreateRecordMetricMethodByDataClass(Metric metric) tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, new CodePrimitiveExpression("locale"), payloadLocale))); + // Generate: datum.AddResultToMetadata(payload.Result); + var payloadResult = new CodeFieldReferenceExpression(payload, "Result"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression( + new CodeMethodReferenceExpression(datum, AddResultToMetadataMethodName), + payloadResult))); + // Set MetricDatum Metadata values metric.metadata? .Where(metadata => !ImplicitFields.Contains(metadata.type)) diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/AwsToolkit.Telemetry.Events.SourceGenerator.csproj b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/AwsToolkit.Telemetry.Events.SourceGenerator.csproj new file mode 100644 index 000000000..0108c9cf0 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/AwsToolkit.Telemetry.Events.SourceGenerator.csproj @@ -0,0 +1,75 @@ + + + + Library + netstandard2.0 + Amazon.AwsToolkit.Telemetry.Events.SourceGenerator + Amazon.AwsToolkit.Telemetry.Events.SourceGenerator + + + + + + + + + + true + false + + true + + + + + Definitions\%(Filename)%(Extension) + Always + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/DefinitionsBuilder.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/DefinitionsBuilder.cs new file mode 100644 index 000000000..9e4d1ab40 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/DefinitionsBuilder.cs @@ -0,0 +1,587 @@ +using System; +using System.CodeDom; +using System.CodeDom.Compiler; +using System.Collections.Generic; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using Amazon.AwsToolkit.Telemetry.Events.Generator.Models; +using Amazon.AwsToolkit.Telemetry.Events.Generator.Utils; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generator +{ + /// + /// Generates code that allows programs like the Toolkit to instantiate and publish Telemetry Events + /// + public class DefinitionsBuilder + { + private const string MetadataEntryFullName = "MetadataEntry"; + private const string MetricDatumFullName = "MetricDatum"; + private const string AddMetadataMethodName = "AddMetadata"; + private const string AddResultToMetadataMethodName = "AddResultToMetadata"; + private const string InvokeTransformMethodName = "InvokeTransform"; + + // contains metadata fields that should be skipped when generating code. + // These fields are covered by the BaseTelemetryEvent and BaseGeneratedTelemetryEvent classes + private static readonly string[] ImplicitFields = + { + "result", + "reason", + "errorCode", + "causedBy", + "httpStatusCode", + "requestId", + "requestServiceType", + "duration", + "locale" + }; + + private readonly CodeMethodReferenceExpression _invariantCulture = + new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(CultureInfo)), + nameof(CultureInfo.InvariantCulture)); + + private readonly CodeMethodReferenceExpression _debugAssert = + new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(System.Diagnostics.Debug)), "Assert"); + + private string _namespace; + + // Used for lookup during generation + private readonly List _types = new List(); + + // Types to produce generated code for + private readonly List _typesToGenerate = new List(); + private readonly List _metrics = new List(); + + /// + /// Supply Metrics Type definitions to the builder + /// + /// + /// + /// When true, the types will only be used to assist in generating code for metrics. + /// The code that is generated is expected to reside somewhere that can reference these types. + /// This would be used by repo-specific telemetry definitions. + /// When false, the types will have code produced to define them. + /// This would be used by the toolkit common telemetry definitions, and baked into a package. + /// + public DefinitionsBuilder AddMetricsTypes(IList types, bool referenceOnly = false) + { + _types.AddRange(types); + + if (!referenceOnly) + { + _typesToGenerate.AddRange(types); + } + + return this; + } + + public DefinitionsBuilder AddMetrics(IList metrics) + { + _metrics.AddRange(metrics); + + return this; + } + + public DefinitionsBuilder WithNamespace(string generatedNamespace) + { + _namespace = generatedNamespace; + + return this; + } + + public string Build() + { + if (string.IsNullOrWhiteSpace(_namespace)) + { + throw new MissingFieldException("Namespace not provided"); + } + + var blankNamespace = new CodeNamespace(); // Used for top level Using statements + var generatedNamespace = new CodeNamespace(_namespace); // Where generated classes, types, etc are added to + + var generatedCode = new CodeCompileUnit(); + generatedCode.Namespaces.Add(blankNamespace); + generatedCode.Namespaces.Add(generatedNamespace); + + // Add a top level comment + blankNamespace.Comments.Add(new CodeCommentStatement("--------------------------------------------------------------------------------", true)); + blankNamespace.Comments.Add(new CodeCommentStatement("This file is generated from https://github.com/aws/aws-toolkit-common/tree/main/telemetry", true)); + blankNamespace.Comments.Add(new CodeCommentStatement("--------------------------------------------------------------------------------", true)); + + // Set up top level using statements + blankNamespace.Imports.Add(new CodeNamespaceImport("System")); + blankNamespace.Imports.Add(new CodeNamespaceImport("System.Collections.Generic")); + // All generated code is expected to be placed in, or somewhere with a dependency on, + // AwsToolkit.Telemetry.Events.Generated + if (_namespace != Options.DefaultEventsNamespace) + { + blankNamespace.Imports.Add(new CodeNamespaceImport(Options.DefaultEventsNamespace)); + } + blankNamespace.Imports.Add(new CodeNamespaceImport("Amazon.AwsToolkit.Telemetry.Events.Core")); + + // "public sealed partial class ToolkitTelemetryEvent" (contains generated code the toolkit uses to record metrics) + var telemetryEventsClass = new CodeTypeDeclaration() + { + Name = "ToolkitTelemetryEvent", + IsClass = true, + IsPartial = true, + TypeAttributes = TypeAttributes.Public + }; + telemetryEventsClass.Comments.Add(new CodeCommentStatement("Contains methods to record telemetry events", true)); + generatedNamespace.Types.Add(telemetryEventsClass); + + ProcessMetricTypes(generatedNamespace); + ProcessMetrics(telemetryEventsClass, generatedNamespace); + + // Output generated code to a string + CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); + CodeGeneratorOptions options = new CodeGeneratorOptions + { + BracingStyle = "C", + BlankLinesBetweenMembers = true + }; + + using (var writer = new StringWriter()) + { + provider.GenerateCodeFromCompileUnit(generatedCode, writer, options); + return writer.ToString() + // XXX: CodeDom does not support static class generation. Post processing to accomplish this. + .Replace($"public partial class {telemetryEventsClass.Name}", $"public static partial class {telemetryEventsClass.Name}"); + } + } + + /// + /// Generate code to support defined metric types + /// + /// + private void ProcessMetricTypes(CodeNamespace generatedNamespace) + { + _typesToGenerate.ForEach(metricType => ProcessMetricType(metricType, generatedNamespace)); + } + + /// + /// Generate code to support a metric type + /// + internal void ProcessMetricType(MetricType type, CodeNamespace generatedNamespace) + { + try + { + // Handle non-POCO types + if (!type.IsAliasedType()) + { + // Generate strongly typed code for types that contain "allowed values" + generatedNamespace.Types.Add(GenerateEnumStruct(type)); + } + } + catch (Exception ex) + { + throw new Exception($"Failed to generate code for metric type: {type.name}", ex); + } + } + + /// + /// Given a type that contains a set of allowed values, generates a struct containing static fields. + /// + private CodeTypeDeclaration GenerateEnumStruct(MetricType type) + { + var typeDeclaration = new CodeTypeDeclaration(type.GetGeneratedTypeName()) + { + IsStruct = true, + TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed + }; + + typeDeclaration.Comments.Add(new CodeCommentStatement("Metric field type", true)); + if (!string.IsNullOrWhiteSpace(type.description)) + { + typeDeclaration.Comments.Add(new CodeCommentStatement(type.description, true)); + } + + var valueField = new CodeMemberField(typeof(string), "_value"); + valueField.Attributes = MemberAttributes.Private; + typeDeclaration.Members.Add(valueField); + + // Generate the constructor (stores provided value in _value) + var typeConstructor = new CodeConstructor(); + typeConstructor.Attributes = MemberAttributes.Public; + typeConstructor.Parameters.Add(new CodeParameterDeclarationExpression("System.string", "value")); + + // this._value = value; + var valueFieldRef = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), valueField.Name); + typeConstructor.Statements.Add(new CodeAssignStatement(valueFieldRef, new CodeArgumentReferenceExpression("value"))); + + typeDeclaration.Members.Add(typeConstructor); + + // Generate static fields for each allowed value + type.allowedValues? + .ToList() + .ForEach(allowedValue => + { + // eg: public static readonly Runtime Dotnetcore21 = new Runtime("dotnetcore2.1") + CodeMemberField field = new CodeMemberField($"readonly {type.GetGeneratedTypeName()}", + allowedValue.Replace(" ", "_").ToPascalCase().Replace(".", "").Replace("-", "")) + { + InitExpression = new CodeObjectCreateExpression(type.GetGeneratedTypeName(), + new CodeExpression[] {new CodePrimitiveExpression(allowedValue)}), + Attributes = MemberAttributes.Static | MemberAttributes.Public + }; + field.Comments.Add(new CodeCommentStatement(allowedValue, true)); + + typeDeclaration.Members.Add(field); + }); + + // Generate a ToString method, which returns this._value + // ToString is used by the AddMetadata method + var toString = new CodeMemberMethod() + { + Name = "ToString", + Attributes = MemberAttributes.Public | MemberAttributes.Override, + ReturnType = new CodeTypeReference(typeof(string)) + }; + + toString.Statements.Add( + new CodeMethodReturnStatement(new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), + valueField.Name))); + + typeDeclaration.Members.Add(toString); + + return typeDeclaration; + } + + /// + /// Generate code to support defined metrics + /// + /// + private void ProcessMetrics(CodeTypeDeclaration telemetryEventsClass, CodeNamespace generatedNamespace) + { + _metrics.ForEach(metric => ProcessMetric(metric, telemetryEventsClass, generatedNamespace)); + } + + /// + /// Generate code to support a metric + /// + private void ProcessMetric(Metric metric, CodeTypeDeclaration telemetryEventsClass, CodeNamespace generatedNamespace) + { + try + { + generatedNamespace.Types.Add(CreateMetricDataClass(metric)); + telemetryEventsClass.Members.Add(CreateRecordMetricMethodByDataClass(metric)); + } + catch (Exception ex) + { + throw new Exception($"Failed to generate code for metric: {metric.name}", ex); + } + } + + /// + /// Generates the data class used by the toolkit to represent this metric + /// + private CodeTypeDeclaration CreateMetricDataClass(Metric metric) + { + var cls = new CodeTypeDeclaration + { + IsClass = true, + Name = SanitizeName(metric.name), + TypeAttributes = TypeAttributes.Public | TypeAttributes.Sealed + }; + + cls.BaseTypes.Add("BaseGeneratedTelemetryEvent"); + + if (!string.IsNullOrWhiteSpace(metric.description)) + { + cls.Comments.Add(new CodeCommentStatement(metric.description, true)); + } + + // Generate the constructor + var typeConstructor = new CodeConstructor {Attributes = MemberAttributes.Public}; + + // Initialize the passive field based on this metric declaration + // Generate: this.Passive = true/false; + var valueFieldRef = new CodeFieldReferenceExpression(new CodeThisReferenceExpression(), "Passive"); + typeConstructor.Statements.Add(new CodeAssignStatement(valueFieldRef, new CodePrimitiveExpression(metric.passive))); + + cls.Members.Add(typeConstructor); + + // Generate the class members + metric.metadata? + .Where(metadata => !ImplicitFields.Contains(metadata.type)) + .ToList().ForEach(metadata => + { + var metricType = GetMetricType(metadata.type); + var fieldName = metadata.type.ToPascalCase(); + + var generatedTypeName = metricType.GetGeneratedTypeName(); + + if (IsNullable(metadata)) + { + generatedTypeName += "?"; + } + + var field = new CodeMemberField(generatedTypeName, fieldName) + { + Attributes = MemberAttributes.Public + }; + + var description = $"{(metadata.ResolvedRequired ? "" : "Optional - ")}{metricType.description ?? string.Empty}"; + if (!string.IsNullOrEmpty(description)) + { + field.Comments.Add(new CodeCommentStatement(description, true)); + } + + cls.Members.Add(field); + }); + + return cls; + } + + // Eg: 'count' -> "Unit.Count" + private CodeExpression GetMetricUnitExpression(Metric metric) + { + var unit = metric.unit ?? "None"; // Fall back to "Unit.None" if there is no metric unit provided + return new CodeFieldReferenceExpression(new CodeTypeReferenceExpression("Unit"), unit.ToPascalCase()); + } + + /// + /// Generates the "Record Metric" method used by the toolkit to send this metric to the backend + /// + private CodeMemberMethod CreateRecordMetricMethodByDataClass(Metric metric) + { + CodeMemberMethod recordMethod = new CodeMemberMethod + { + Attributes = MemberAttributes.Public | MemberAttributes.Static, + Name = $"Record{SanitizeName(metric.name)}", + ReturnType = new CodeTypeReference() + }; + + if (!string.IsNullOrWhiteSpace(metric.description)) + { + recordMethod.Comments.Add(new CodeCommentStatement("Records Telemetry Event:", true)); + recordMethod.Comments.Add(new CodeCommentStatement(metric.description, true)); + } + + // RecordXxx Parameters + var telemetryLogger = new CodeParameterDeclarationExpression("this ITelemetryLogger", "telemetryLogger"); + recordMethod.Parameters.Add(telemetryLogger); + recordMethod.Parameters.Add(new CodeParameterDeclarationExpression(SanitizeName(metric.name), "payload")); + recordMethod.Parameters.Add(new CodeParameterDeclarationExpression("Func", "transformDatum = null")); + + // Generate method body + var tryStatements = new List(); + var catchClauses = new List(); + + // Create a metrics object from the given payload + // Generate the method body + var metrics = new CodeVariableReferenceExpression("metrics"); + var metricsDataField = new CodeFieldReferenceExpression(metrics, "Data"); + var payload = new CodeArgumentReferenceExpression("payload"); + var transformDatum = new CodeArgumentReferenceExpression("transformDatum"); + var datum = new CodeVariableReferenceExpression("datum"); + var datumAddData = new CodeMethodReferenceExpression(datum, AddMetadataMethodName); + var datetimeNow = new CodeMethodReferenceExpression(new CodeTypeReferenceExpression(typeof(DateTime)), nameof(DateTime.Now)); + + // Instantiate metrics + tryStatements.Add(new CodeVariableDeclarationStatement("var", metrics.VariableName, new CodeObjectCreateExpression("Metrics"))); + + // Set metrics.CreatedOn to (payload.CreatedOn ?? DateTime.Now) + var payloadCreatedOn = new CodeFieldReferenceExpression(payload, "CreatedOn"); + var metricsCreatedOn = new CodeFieldReferenceExpression(metrics, "CreatedOn"); + + var createdOnCond = new CodeConditionStatement(); + createdOnCond.Condition = new CodeFieldReferenceExpression(payloadCreatedOn, "HasValue"); + createdOnCond.TrueStatements.Add(new CodeAssignStatement(metricsCreatedOn, new CodeFieldReferenceExpression(payloadCreatedOn, "Value"))); + createdOnCond.FalseStatements.Add(new CodeAssignStatement(metricsCreatedOn, datetimeNow)); + tryStatements.Add(createdOnCond); + + // Instantiate a Data list + tryStatements.Add(new CodeAssignStatement(metricsDataField, new CodeObjectCreateExpression($"List<{MetricDatumFullName}>"))); + + // Instantiate MetricDatum + tryStatements.Add(new CodeSnippetStatement()); + tryStatements.Add(new CodeVariableDeclarationStatement("var", datum.VariableName, new CodeObjectCreateExpression(MetricDatumFullName))); + tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "MetricName"), new CodePrimitiveExpression(metric.name))); + tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "Unit"), GetMetricUnitExpression(metric))); + tryStatements.Add(new CodeAssignStatement(new CodeFieldReferenceExpression(datum, "Passive"), new CodeFieldReferenceExpression(payload, "Passive"))); + + // Set Datum.Value to (payload.Value ?? 1) + var payloadValue = new CodeFieldReferenceExpression(payload, "Value"); + var datumValue = new CodeFieldReferenceExpression(datum, "Value"); + + var valueCond = new CodeConditionStatement(); + valueCond.Condition = new CodeFieldReferenceExpression(payloadValue, "HasValue"); + valueCond.TrueStatements.Add(new CodeAssignStatement(datumValue, new CodeFieldReferenceExpression(payloadValue, "Value"))); + valueCond.FalseStatements.Add(new CodeAssignStatement(datumValue, new CodePrimitiveExpression(1))); + tryStatements.Add(valueCond); + + // Generate: datum.AddMetadata("awsAccount", payload.AwsAccount); + var payloadAwsAccount = new CodeFieldReferenceExpression(payload, "AwsAccount"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("awsAccount"), payloadAwsAccount))); + + // Generate: datum.AddMetadata("awsRegion", payload.AwsRegion); + var payloadAwsRegion = new CodeFieldReferenceExpression(payload, "AwsRegion"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("awsRegion"), payloadAwsRegion))); + + // Generate: datum.AddMetadata("reason", payload.Reason); + var payloadReason = new CodeFieldReferenceExpression(payload, "Reason"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("reason"), payloadReason))); + + // Generate: datum.AddMetadata("errorCode", payload.ErrorCode); + var payloadErrorCode = new CodeFieldReferenceExpression(payload, "ErrorCode"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("errorCode"), payloadErrorCode))); + + // Generate: datum.AddMetadata("causedBy", payload.CausedBy); + var payloadCausedBy = new CodeFieldReferenceExpression(payload, "CausedBy"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("causedBy"), payloadCausedBy))); + + // Generate: datum.AddMetadata("httpStatusCode", payload.HttpStatusCode); + var payloadHttpStatusCode = new CodeFieldReferenceExpression(payload, "HttpStatusCode"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("httpStatusCode"), payloadHttpStatusCode))); + + // Generate: datum.AddMetadata("requestId", payload.RequestId); + var payloadRequestId = new CodeFieldReferenceExpression(payload, "RequestId"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("requestId"), payloadRequestId))); + + // Generate: datum.AddMetadata("requestServiceType", payload.RequestServiceType); + var payloadRequestServiceType = new CodeFieldReferenceExpression(payload, "RequestServiceType"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("requestServiceType"), payloadRequestServiceType))); + + // Generate: + // if (payload.Duration.HasValue) + // { + // datum.AddMetadata("duration", payload.Duration.Value); + // } + var payloadDuration = new CodeFieldReferenceExpression(payload, "Duration"); + var hasValueDuration = new CodeFieldReferenceExpression(payloadDuration, "HasValue"); + var durationMetadata = new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("duration"), new CodeFieldReferenceExpression(payloadDuration, "Value")); + + tryStatements.Add(new CodeConditionStatement(hasValueDuration, new CodeExpressionStatement(durationMetadata))); + + // Generate: datum.AddMetadata("locale", payload.Locale); + var payloadLocale = new CodeFieldReferenceExpression(payload, "Locale"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression("locale"), payloadLocale))); + + // Generate: datum.AddResultToMetadata(payload.Result); + var payloadResult = new CodeFieldReferenceExpression(payload, "Result"); + tryStatements.Add(new CodeExpressionStatement(new CodeMethodInvokeExpression( + new CodeMethodReferenceExpression(datum, AddResultToMetadataMethodName), + payloadResult))); + + // Set MetricDatum Metadata values + metric.metadata? + .Where(metadata => !ImplicitFields.Contains(metadata.type)) + .ToList().ForEach(metadata => + { + tryStatements.Add(new CodeSnippetStatement()); + + var payloadField = new CodeFieldReferenceExpression(payload, SanitizeName(metadata.type)); + + if (IsNullable(metadata)) + { + // Generate: + // if (payload.foo.HasValue) + // { + // datum.AddMetadata("foo", payload.foo.Value); + // } + var hasValue = new CodeFieldReferenceExpression(payloadField, "HasValue"); + var addMetadata = new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression(metadata.type), new CodeFieldReferenceExpression(payloadField, "Value")); + + tryStatements.Add( + new CodeConditionStatement(hasValue, new CodeExpressionStatement(addMetadata))); + } + else + { + // Generate: datum.AddMetadata("foo", payload.foo); + tryStatements.Add(new CodeExpressionStatement (new CodeMethodInvokeExpression(datumAddData, + new CodePrimitiveExpression(metadata.type), payloadField))); + } + }); + + // Generate: "InvokeTransform function on datum" + // datum = datum.InvokeTransform(transformDatum) + var datumInvoke = new CodeMethodReferenceExpression(datum, InvokeTransformMethodName); + var invokeTransform = new CodeMethodInvokeExpression(datumInvoke, transformDatum); + var assignTransform = new CodeAssignStatement(datum, invokeTransform); + tryStatements.Add(new CodeSnippetStatement()); + tryStatements.Add(assignTransform); + + // Generate: metrics.Data.Add(datum); + tryStatements.Add(new CodeSnippetStatement()); + tryStatements.Add(new CodeExpressionStatement (new CodeMethodInvokeExpression(metricsDataField, "Add", datum))); + + // Generate: telemetryLogger.Record(metrics); + tryStatements.Add(new CodeExpressionStatement (new CodeMethodInvokeExpression(new CodeArgumentReferenceExpression("telemetryLogger"), "Record", metrics))); + + var catchClause = new CodeCatchClause("e", new CodeTypeReference(typeof(Exception))); + catchClause.Statements.Add(new CodeExpressionStatement( + new CodeMethodInvokeExpression( + new CodeFieldReferenceExpression(new CodeArgumentReferenceExpression("telemetryLogger"), "Logger"), + "Error", + new CodePrimitiveExpression("Error recording telemetry event"), + new CodeArgumentReferenceExpression("e")) + )); + + // System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); + catchClause.Statements.Add(new CodeExpressionStatement( + new CodeMethodInvokeExpression( + _debugAssert, + new CodePrimitiveExpression(false), + new CodePrimitiveExpression("Error Recording Telemetry")) + )); + + catchClauses.Add(catchClause); + + recordMethod.Statements.Add( + new CodeTryCatchFinallyStatement(tryStatements.ToArray(), catchClauses.ToArray()) + ); + + return recordMethod; + } + + private bool IsNullable(Metadata metadata) + { + var metricType = GetMetricType(metadata.type); + + if (!metricType.IsAliasedType()) + { + return !metadata.ResolvedRequired; + } + + var type = metricType.GetAliasedType(); + + // System.string cannot be made nullable + return type != typeof(string) && !metadata.ResolvedRequired; + } + + private MetricType GetMetricType(string name) + { + try + { + return _types.Single(t => t.name == name); + } + catch (Exception e) + { + throw new Exception($"Unable to find metric type: {name}", e); + } + } + + private string SanitizeName(string name) + { + return string.Join( + "", + name + .Split(new char[] {'.', ',', '_', '-'}, StringSplitOptions.RemoveEmptyEntries) + .Select(x => x.ToPascalCase()) + ); + } + } +} diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/Metadata.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/Metadata.cs new file mode 100644 index 000000000..306659309 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/Metadata.cs @@ -0,0 +1,22 @@ +// ReSharper disable InconsistentNaming +namespace Amazon.AwsToolkit.Telemetry.Events.Generator.Models +{ + public class Metadata + { + public string type { get; set; } + public bool? required { get; set; } + + public bool ResolvedRequired + { + get + { + if (!required.HasValue) + { + return true; + } + + return required.Value; + } + } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/Metric.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/Metric.cs new file mode 100644 index 000000000..02c3d15a0 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/Metric.cs @@ -0,0 +1,12 @@ +// ReSharper disable InconsistentNaming +namespace Amazon.AwsToolkit.Telemetry.Events.Generator.Models +{ + public class Metric + { + public string name { get; set; } + public string description { get; set; } + public Metadata[] metadata { get; set; } + public string unit { get; set; } + public bool passive { get; set; } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/MetricType.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/MetricType.cs new file mode 100644 index 000000000..9a917caa1 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/MetricType.cs @@ -0,0 +1,11 @@ +// ReSharper disable InconsistentNaming +namespace Amazon.AwsToolkit.Telemetry.Events.Generator.Models +{ + public class MetricType + { + public string name { get; set; } + public string type { get; set; } + public string description { get; set; } + public string[] allowedValues { get; set; } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/TelemetryDefinitions.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/TelemetryDefinitions.cs new file mode 100644 index 000000000..2fd4fe398 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Models/TelemetryDefinitions.cs @@ -0,0 +1,37 @@ +// ReSharper disable InconsistentNaming +//using System.IO; +using System.Linq; +using Newtonsoft.Json; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generator.Models +{ + public class TelemetryDefinitions + { + public MetricType[] types { get; set; } + public Metric[] metrics { get; set; } + + + //public static TelemetryDefinitions Load(string filename) + //{ + // var json = File.ReadAllText(filename); + + // return LoadFromJson(json); + //} + + public static TelemetryDefinitions LoadFromJson(string json) + { + var doc = JsonConvert.DeserializeObject(json); + + // Process all metric metadata so that null "required" fields are set to true + doc.metrics.ToList().ForEach(m => m.metadata?.ToList().ForEach(data => + { + if (!data.required.HasValue) + { + data.required = true; + } + })); + + return doc; + } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Options.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Options.cs new file mode 100644 index 000000000..5cf8c5980 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Options.cs @@ -0,0 +1,44 @@ +using System.Collections.Generic; +using CommandLine; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generator +{ + public class Options + { + public const string DefaultEventsNamespace = "Amazon.AwsToolkit.Telemetry.Events.Generated"; + + [Option( + Default = DefaultEventsNamespace, + Required = false, + HelpText = "Namespace to produce generated code in. When generating code for supplemental " + + "telemetry definitions, this can help 'fit' the generated code into a host codebase" + )] + public string Namespace { get; set; } + + [Option( + shortName:'s', + Required = false, + HelpText = "Optional, space separated. Supplemental telemetry definition files. " + + "When provided, code is not generated for common telemetry definitions. " + + "This is intended for toolkit-specific telemetry definitions that live " + + "in the host repo (rather than the toolkit common repo). Generated code " + + "is expected to have access to the common Telemetry Events package and namespace." + )] + public IEnumerable SupplementalDefinitions { get; set; } + + [Option( + shortName:'o', + Required = false, + HelpText = "Location to write generated code to. Defaults to current folder." + )] + public string OutputFolder { get; set; } + + [Option( + shortName: 'f', + Default = "GeneratedCode.cs", + Required = false, + HelpText = "Name of file to produce." + )] + public string OutputFilename { get; set; } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Program.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Program.cs new file mode 100644 index 000000000..9217a8111 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Program.cs @@ -0,0 +1,169 @@ +using System; +using System.IO; +using System.Linq; +using Amazon.AwsToolkit.Telemetry.Events.Generator.Models; +using CommandLine; +using Microsoft.CodeAnalysis; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generator +{ + [Generator] + public class Program : ISourceGenerator + { + //static void Main(string[] args) + //{ + // Options options = null; + // Parser.Default.ParseArguments(args) + // .WithParsed(o => + // { + // if (string.IsNullOrWhiteSpace(o.OutputFolder)) + // { + // o.OutputFolder = Directory.GetCurrentDirectory(); + // } + + // options = o; + // }); + + // if (options == null) + // { + // throw new Exception("Program Options are undefined or missing."); + // } + + // var definitionPath = Path.Combine(GetTelemetryDefinitionsFolder(), "commonDefinitions.json"); + + // var commonDefinitions = TelemetryDefinitions.Load(definitionPath); + + // DefinitionsBuilder builder = new DefinitionsBuilder() + // .WithNamespace(options.Namespace); + + // // Generate the main telemetry definitions, or supplemental definitions + // if (!options.SupplementalDefinitions.Any()) + // { + // // We're producing the main telemetry definitions + // builder + // .AddMetricsTypes(commonDefinitions.types) + // .AddMetrics(commonDefinitions.metrics); + // } + // else + // { + // // We're producing supplemental "repo-specific" definitions + // builder + // .AddMetricsTypes(commonDefinitions.types, referenceOnly: true); + + // // Load each file, add types and metrics + // options.SupplementalDefinitions.Select(TelemetryDefinitions.Load) + // .ToList() + // .ForEach(definitions => + // { + // builder + // .AddMetricsTypes(definitions.types) + // .AddMetrics(definitions.metrics); + // }); + // } + + // var code = builder.Build(); + + // File.WriteAllText(Path.Combine(options.OutputFolder, options.OutputFilename), code); + //} + + private static class AdditionalFilesPropertyNames + { + public const string Namespace = "build_metadata.AdditionalFiles.Telemetry_SrcGen_Namespace"; + } + + public static string GetTelemetryDefinitionsFolder() + { + return Path.Combine( + Path.GetDirectoryName(typeof(Program).Assembly.Location), + "Definitions"); + } + + public void Initialize(GeneratorInitializationContext context) + { + //System.Diagnostics.Debugger.Launch(); + //throw new NotImplementedException(); + } + + public void Execute(GeneratorExecutionContext context) + { + try + { + //var definitionPath = Path.Combine(GetTelemetryDefinitionsFolder(), "commonDefinitions.json"); + + //var commonDefinitions = TelemetryDefinitions.Load(definitionPath); + var stream = typeof(Program).Assembly.GetManifestResourceStream("Amazon.AwsToolkit.Telemetry.Events.SourceGenerator.commonDefinitions.json"); + var json = new StreamReader(stream).ReadToEnd(); + var commonDefinitions = TelemetryDefinitions.LoadFromJson(json); + + DefinitionsBuilder builder = new DefinitionsBuilder() + //.WithNamespace(options.Namespace); + .WithNamespace("Amazon.AwsToolkit.Telemetry.Events.Generated"); + + // Generate the main telemetry definitions, or supplemental definitions + //if (!options.SupplementalDefinitions.Any()) + { + // We're producing the main telemetry definitions + builder + .AddMetricsTypes(commonDefinitions.types) + .AddMetrics(commonDefinitions.metrics); + + } + + var code = builder.Build(); + + // Add the source code to the compilation + //context.AddSource($"GeneratedCode.g.cs", code); + + + // TODO: Temp: Experimental code. + // We should make one "internal" sourcegenerator to populate the "core" events into Telemetry.Events + // Then we make the public, packageable sourcegenerator that produces the supplemental definitions + // (this is what would be added to the Toolkit). + // For now this class operates makes these mutually exclusive + // Below is the supplemental generation. + + bool skipMainGeneratedCode = false; + /////// --- supplemental --- + foreach (var file in context.AdditionalFiles) + { + var fileOptions = context.AnalyzerConfigOptions.GetOptions(file); + + if (!fileOptions.TryGetValue(AdditionalFilesPropertyNames.Namespace, out var outputNamespace)) + { + continue; + } + + var fileJson = file.GetText().ToString(); + + DefinitionsBuilder afBuilder = new DefinitionsBuilder() + .WithNamespace(outputNamespace); + + // We're producing supplemental "repo-specific" definitions + afBuilder + .AddMetricsTypes(commonDefinitions.types, referenceOnly: true); + + var fileDefinitions = TelemetryDefinitions.LoadFromJson(fileJson); + + afBuilder + .AddMetricsTypes(fileDefinitions.types) + .AddMetrics(fileDefinitions.metrics); + + var fileCode = afBuilder.Build(); + + context.AddSource($"{Path.GetFileNameWithoutExtension(file.Path)}.g.cs", fileCode); + skipMainGeneratedCode = true; + } + + if (!skipMainGeneratedCode) + { + context.AddSource($"GeneratedCode.g.cs", code); + } + } + catch (Exception ex) + { + var code = $"// Error: {ex.Message}"; + context.AddSource($"Error.GeneratedCode.g.cs", code); + } + } + } +} diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Utils/MetricTypeExtensionMethods.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Utils/MetricTypeExtensionMethods.cs new file mode 100644 index 000000000..44d17592e --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Utils/MetricTypeExtensionMethods.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using Amazon.AwsToolkit.Telemetry.Events.Generator.Models; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generator.Utils +{ + public static class MetricTypeExtensionMethods + { + static readonly Dictionary AliasedTypes = new Dictionary() + { + // See https://github.com/aws/aws-toolkit-common/blob/main/telemetry/telemetrySchema.json + // properties/types/items/properties/type + {"int", typeof(int) }, + {"double", typeof(double) }, + {"string", typeof(string) }, + {"boolean", typeof(bool) }, + }; + + public static bool IsAliasedType(this MetricType type) + { + if (type.allowedValues?.Length > 0) + { + return false; + } + + return AliasedTypes.ContainsKey(type.type); + } + + public static Type GetAliasedType(this MetricType type) + { + if (!type.IsAliasedType()) + { + throw new Exception($"type not aliased: {type.type}"); + } + + return AliasedTypes[type.type]; + } + + public static string GetGeneratedTypeName(this MetricType type) + { + var typeName = type.name; + if (type.IsAliasedType()) + { + typeName = type.GetAliasedType().FullName; + } + + return typeName.ToPascalCase(); + } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Utils/StringExtensionMethods.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Utils/StringExtensionMethods.cs new file mode 100644 index 000000000..f26baef95 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.SourceGenerator/Utils/StringExtensionMethods.cs @@ -0,0 +1,28 @@ +using System.Linq; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generator.Utils +{ + public static class StringExtensionMethods + { + public static string ToPascalCase(this string text) + { + if (string.IsNullOrEmpty(text)) + { + return string.Empty; + } + + if (text.Length == 1) + { + return text.ToUpper(); + } + + var segments = text.Split('_'); + if (segments.Length > 1) + { + return string.Concat(segments.Select(ToPascalCase)); + } + + return $"{text[0].ToString().ToUpper()}{text.Substring(1)}"; + } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/AwsToolkit.Telemetry.Events.Tests.csproj b/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/AwsToolkit.Telemetry.Events.Tests.csproj index 396174e43..76fe4f6f8 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/AwsToolkit.Telemetry.Events.Tests.csproj +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/AwsToolkit.Telemetry.Events.Tests.csproj @@ -1,4 +1,4 @@ - + net472 Amazon.AwsToolkit.Telemetry.Events.Tests @@ -19,18 +19,15 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + - - - - - - PreserveNewest - - - - - \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/Generated/GeneratedCode.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/Generated/GeneratedCode.cs deleted file mode 100644 index 5e171cff8..000000000 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/Generated/GeneratedCode.cs +++ /dev/null @@ -1,21036 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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:///abc.txt) - public static void RecordS3CopyUri(this ITelemetryLogger telemetryLogger, S3CopyUri payload, Func transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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 transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - 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:///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; - } - } -} diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/Generated/SupplementalCode.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/Generated/SupplementalCode.cs deleted file mode 100644 index 59c3670b3..000000000 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/Generated/SupplementalCode.cs +++ /dev/null @@ -1,337 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -using Amazon.AwsToolkit.Telemetry.Events.Core; -using Amazon.AwsToolkit.Telemetry.Events.Generated; -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.Tests.Generated -{ - - - /// Contains methods to record telemetry events - public static partial class ToolkitTelemetryEvent - { - - /// Records Telemetry Event: - /// Sample event that uses a type from this definition and a type from the common definitions - public static void RecordSampleExtendedInvoke(this ITelemetryLogger telemetryLogger, SampleExtendedInvoke payload, Func transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - var datum = new MetricDatum(); - datum.MetricName = "sample_extendedInvoke"; - 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); - } - - if (payload.ExtendedRuntime.HasValue) - { - datum.AddMetadata("extendedRuntime", payload.ExtendedRuntime.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: - /// Sample event that uses types from this definition only - public static void RecordSampleReleaseBees(this ITelemetryLogger telemetryLogger, SampleReleaseBees payload, Func transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - var datum = new MetricDatum(); - datum.MetricName = "sample_releaseBees"; - 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("bees", payload.Bees); - - datum = datum.InvokeTransform(transformDatum); - - metrics.Data.Add(datum); - telemetryLogger.Record(metrics); - } - catch (System.Exception e) - { - telemetryLogger.Logger.Error("Error recording telemetry event", e); - System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); - } - } - - /// Records Telemetry Event: - /// Sample event that uses a unit - public static void RecordSampleTestRun(this ITelemetryLogger telemetryLogger, SampleTestRun payload, Func transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - var datum = new MetricDatum(); - datum.MetricName = "sample_testRun"; - 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 = datum.InvokeTransform(transformDatum); - - metrics.Data.Add(datum); - telemetryLogger.Record(metrics); - } - catch (System.Exception e) - { - telemetryLogger.Logger.Error("Error recording telemetry event", e); - System.Diagnostics.Debug.Assert(false, "Error Recording Telemetry"); - } - } - - /// Records Telemetry Event: - /// Sample event that is passive - public static void RecordSamplePassive(this ITelemetryLogger telemetryLogger, SamplePassive payload, Func transformDatum = null) - { - try - { - var metrics = new Metrics(); - if (payload.CreatedOn.HasValue) - { - metrics.CreatedOn = payload.CreatedOn.Value; - } - else - { - metrics.CreatedOn = System.DateTime.Now; - } - metrics.Data = new List(); - - var datum = new MetricDatum(); - datum.MetricName = "sample_passive"; - 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"); - } - } - } - - /// Metric field type - /// Sample Extended runtime - public struct ExtendedRuntime - { - - private string _value; - - /// dirt - public static readonly ExtendedRuntime Dirt = new ExtendedRuntime("dirt"); - - /// rascal - public static readonly ExtendedRuntime Rascal = new ExtendedRuntime("rascal"); - - public ExtendedRuntime(string value) - { - this._value = value; - } - - public override string ToString() - { - return this._value; - } - } - - /// Sample event that uses a type from this definition and a type from the common definitions - public sealed class SampleExtendedInvoke : BaseTelemetryEvent - { - - /// Optional - The lambda runtime - public Runtime? Runtime; - - /// Optional - Sample Extended runtime - public ExtendedRuntime? ExtendedRuntime; - - /// The result of the operation - public Result Result; - - public SampleExtendedInvoke() - { - this.Passive = false; - } - } - - /// Sample event that uses types from this definition only - public sealed class SampleReleaseBees : BaseTelemetryEvent - { - - /// Number of bees - public int Bees; - - public SampleReleaseBees() - { - this.Passive = false; - } - } - - /// Sample event that uses a unit - public sealed class SampleTestRun : BaseTelemetryEvent - { - - public SampleTestRun() - { - this.Passive = false; - } - } - - /// Sample event that is passive - public sealed class SamplePassive : BaseTelemetryEvent - { - - public SamplePassive() - { - this.Passive = true; - } - } -} diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/GeneratedCodeTests.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/GeneratedCodeTests.cs index 7c5418c50..556de82d7 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/GeneratedCodeTests.cs +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events.Tests/GeneratedCodeTests.cs @@ -162,6 +162,32 @@ public void RecordNaturallyPassiveMetric() Assert.True(datum.Passive); } + /// + /// RecordAwsCopyArn / aws_copyArn was chosen as a sample metric that does not explicitly define a result field + /// + [Fact] + public void RecordResult() + { + var copyArn = new AwsCopyArn() + { + Result = Result.Succeeded, + }; + + _telemetryLogger.Object.RecordAwsCopyArn(copyArn); + + Assert.NotNull(_recordedMetrics); + _telemetryLogger.Verify( + mock => mock.Record(_recordedMetrics), + Times.Once + ); + + var datum = Assert.Single(_recordedMetrics.Data); + Assert.NotNull(datum); + Assert.Equal("aws_copyArn", datum.MetricName); + Assert.True(datum.Metadata.ContainsKey("result")); + Assert.Equal("Succeeded", datum.Metadata["result"]); + } + [Fact] public void RecordMetricWithMutationTransform() { diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events/AwsToolkit.Telemetry.Events.csproj b/telemetry/csharp/AwsToolkit.Telemetry.Events/AwsToolkit.Telemetry.Events.csproj index 6f7314092..0957a7f32 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.Events/AwsToolkit.Telemetry.Events.csproj +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events/AwsToolkit.Telemetry.Events.csproj @@ -23,6 +23,11 @@ + + + + + diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events/Generated/BaseGeneratedTelemetryEvent.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events/Generated/BaseGeneratedTelemetryEvent.cs new file mode 100644 index 000000000..139fd848c --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events/Generated/BaseGeneratedTelemetryEvent.cs @@ -0,0 +1,24 @@ +using Amazon.AwsToolkit.Telemetry.Events.Core; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generated +{ + + /// + /// This class serves as a "shim" for metadata properties defined as global, but whose types are also + /// defined. Global types should have probably been kept as primitive types, but now we + /// wish to maintain compatibility within the Toolkit code that consumes this package. + /// + /// Global properties: https://github.com/aws/aws-toolkit-common/blob/main/telemetry/telemetryformat.md#global-arguments + /// + public abstract class BaseGeneratedTelemetryEvent : BaseTelemetryEvent + { + /// + /// The result of the operation + /// + /// + /// The Result type is defined in https://github.com/aws/aws-toolkit-common/blob/main/telemetry/definitions/commonDefinitions.json + /// alongside the metrics which we generate as derived classes. + /// + public Result? Result; + } +} diff --git a/telemetry/csharp/AwsToolkit.Telemetry.Events/Generated/MetricDatumExtensionMethods.cs b/telemetry/csharp/AwsToolkit.Telemetry.Events/Generated/MetricDatumExtensionMethods.cs new file mode 100644 index 000000000..625566056 --- /dev/null +++ b/telemetry/csharp/AwsToolkit.Telemetry.Events/Generated/MetricDatumExtensionMethods.cs @@ -0,0 +1,33 @@ +using Amazon.AwsToolkit.Telemetry.Events.Core; +using log4net; + +namespace Amazon.AwsToolkit.Telemetry.Events.Generated +{ + public static class MetricDatumExtensionMethods + { + private static readonly ILog Logger = LogManager.GetLogger(typeof(MetricDatumExtensionMethods)); + + /// + /// TODO : UPDATE ME + /// + /// Add metadata to a metric datum, only if the value is non-blank (object overload). + /// + /// The main use-case for this method is the auto-generated code which provides + /// strongly typed telemetry events emission. + /// + /// If you are explicitly calling this method and you have objects that could be any type, + /// you should use the overload which accepts 'detectPrimitiveType'. An example of this + /// would be to deserialize some JSON content, which contains properties that could be + /// a variety of types, but are handled as type object. + /// + public static void AddResultToMetadata(this MetricDatum metricDatum, Result? value) + { + if (value == null) + { + return; + } + + metricDatum.AddMetadata("result", value.Value.ToString()); + } + } +} \ No newline at end of file diff --git a/telemetry/csharp/AwsToolkit.Telemetry.sln b/telemetry/csharp/AwsToolkit.Telemetry.sln index 00e64ddf6..aadf29f1c 100644 --- a/telemetry/csharp/AwsToolkit.Telemetry.sln +++ b/telemetry/csharp/AwsToolkit.Telemetry.sln @@ -1,15 +1,23 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.30011.22 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35219.272 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AwsToolkit.Telemetry.Events.Generator", "AwsToolkit.Telemetry.Events.Generator\AwsToolkit.Telemetry.Events.Generator.csproj", "{5393032E-025E-4033-ADC4-8A2C2E4E80A9}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AwsToolkit.Telemetry.Events.Generator.Tests", "AwsToolkit.Telemetry.Events.Generator.Tests\AwsToolkit.Telemetry.Events.Generator.Tests.csproj", "{F6B3F8A5-C817-4B16-95AB-E8777365CFA5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AwsToolkit.Telemetry.Events", "AwsToolkit.Telemetry.Events\AwsToolkit.Telemetry.Events.csproj", "{F7334F32-FB00-41FF-8C32-3C9402F2C099}" + ProjectSection(ProjectDependencies) = postProject + {5393032E-025E-4033-ADC4-8A2C2E4E80A9} = {5393032E-025E-4033-ADC4-8A2C2E4E80A9} + EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AwsToolkit.Telemetry.Events.Tests", "AwsToolkit.Telemetry.Events.Tests\AwsToolkit.Telemetry.Events.Tests.csproj", "{7800B019-0023-405F-9ED6-A93430025D77}" + ProjectSection(ProjectDependencies) = postProject + {5393032E-025E-4033-ADC4-8A2C2E4E80A9} = {5393032E-025E-4033-ADC4-8A2C2E4E80A9} + EndProjectSection +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AwsToolkit.Telemetry.Events.SourceGenerator", "AwsToolkit.Telemetry.Events.SourceGenerator\AwsToolkit.Telemetry.Events.SourceGenerator.csproj", "{6AF4F692-0783-4C70-A056-3DBD076333C4}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -33,6 +41,10 @@ Global {7800B019-0023-405F-9ED6-A93430025D77}.Debug|Any CPU.Build.0 = Debug|Any CPU {7800B019-0023-405F-9ED6-A93430025D77}.Release|Any CPU.ActiveCfg = Release|Any CPU {7800B019-0023-405F-9ED6-A93430025D77}.Release|Any CPU.Build.0 = Release|Any CPU + {6AF4F692-0783-4C70-A056-3DBD076333C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6AF4F692-0783-4C70-A056-3DBD076333C4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6AF4F692-0783-4C70-A056-3DBD076333C4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6AF4F692-0783-4C70-A056-3DBD076333C4}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/telemetry/csharp/TelemetryPackage.proj b/telemetry/csharp/TelemetryPackage.proj index 816e55a02..c1b6e86d8 100644 --- a/telemetry/csharp/TelemetryPackage.proj +++ b/telemetry/csharp/TelemetryPackage.proj @@ -1,11 +1,7 @@ - - - +