// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Standard Library using System; namespace AWS.GameKit.Runtime.Models { public enum FeatureStatus { [FeatureStatusData(displayName: "Deployed")] Deployed, [FeatureStatusData(displayName: "Undeployed")] Undeployed, [FeatureStatusData(displayName: "Error")] Error, [FeatureStatusData(displayName: "Rollback Complete")] RollbackComplete, [FeatureStatusData(displayName: "Running")] Running, [FeatureStatusData(displayName: "Generating Templates")] GeneratingTemplates, [FeatureStatusData(displayName: "Uploading Dashboards")] UploadingDashboards, [FeatureStatusData(displayName: "Uploading Layers")] UploadingLayers, [FeatureStatusData(displayName: "Uploading Functions")] UploadingFunctions, [FeatureStatusData(displayName: "Deploying Resources")] DeployingResources, [FeatureStatusData(displayName: "Deleting Resources")] DeletingResources, [FeatureStatusData(displayName: "Unknown")] Unknown, }; [AttributeUsage(AttributeTargets.Field)] public class FeatureStatusData : Attribute { public readonly string DisplayName; public FeatureStatusData(string displayName) { DisplayName = displayName; } } /// /// Extension methods for FeatureStatus which give access to it's enum metadata. /// /// /// This shows how to use the extension methods. /// /// // On the enum class: /// FeatureStatus.Undeployed.GetDisplayName(); /// /// // On an enum variable: /// FeatureStatus myStatus = FeatureStatus.Deployed /// myStatus.GetDisplayName(); /// /// public static class FeatureStatusConverter { public static string GetDisplayName(this FeatureStatus status) { return status.GetAttribute().DisplayName; } } public enum FeatureStatusSummary { Deployed = 0, Undeployed, Error, Running, Unknown }; }