public static IMapperConfigurationExpression Mapping(IMapperConfigurationExpression cfg) { #region UserManagementView cfg.CreateMap <dto_Privillige, PrivilligeCheckViewModel>() .ForMember(x => x.IsChecked, opt => opt.UseValue <bool>(false)).ReverseMap(); cfg.CreateMap <dto_Group, GroupCheckViewModel>() .ForMember(x => x.IsChecked, opt => opt.UseValue <bool>(false)).ReverseMap(); #endregion #region Menu cfg.CreateMap <dto_Menu, MenuItemViewModel>() .ForMember(x => x.title, opt => opt.MapFrom(src => Localize(src.NameEn, src.NameAr))) //.ForMember(x => x.title, opt => opt.MapFrom(src=>src.EnglishName)) //.ForMember(x => x.icon, opt => opt.MapFrom(src => src.icon)) //.ForMember(x => x.link, opt => opt.MapFrom(src=>src.link)) ////.ForMember(x => x.children, opt => opt.Ignore()) ////.ForMember(x => x.children, opt => opt.Ignore()) .ReverseMap(); #endregion #region BL CORE.BL.infrastructure.AutomapperConf.Mapping(cfg); #endregion #region Reports #endregion //cfg.ForAllMaps((typeMap, mapConfig) => mapConfig.MaxDepth(3)); cfg.ForAllMaps((typeMap, mapConfig) => mapConfig.PreserveReferences()); return(cfg); }
private static void UseMapping(IMapperConfigurationExpression config) { config.AddExpressionMapping(); config.UseWebApiProfiles(); config.ForAllMaps((obj, cfg) => cfg.ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null))); }
public static void Configure(IMapperConfigurationExpression cfg) { if (cfg is null) { throw new ArgumentNullException(nameof(cfg)); } cfg.ForAllMaps(AutoIgnorePropertiesInternal); }
public static IMapperConfigurationExpression Mapping(IMapperConfigurationExpression cfg) { cfg.ForAllMaps((typeMap, mapConfig) => mapConfig.MaxDepth(1)); #region BL BL.infrastructure.AutomapperConf.Mapping(cfg); #endregion return(cfg); }
public static void EnableInlineMapping(this IMapperConfigurationExpression cfg) { cfg.ForAllMaps((t, i) => { i.AfterMap((s, d, ctx) => { ctx.ApplyInlineMap(s, d); } ); }); }
public static void AddIgnoreMapAttribute(this IMapperConfigurationExpression configuration) { configuration.ForAllMaps((typeMap, mapExpression) => mapExpression.ForAllMembers(memberOptions => { if (memberOptions.DestinationMember.Has <IgnoreMapAttribute>()) { memberOptions.Ignore(); } })); configuration.ForAllPropertyMaps(propertyMap => propertyMap.SourceMember?.Has <IgnoreMapAttribute>() == true, (_, memberOptions) => memberOptions.Ignore()); }
public virtual void Configure(IMapperConfigurationExpression mapperConfigExpression) { if (mapperConfigExpression == null) { throw new ArgumentNullException(nameof(mapperConfigExpression)); } mapperConfigExpression.ForAllMaps((typeMap, mapExp) => { mapExp.PreserveReferences(); }); }
/// <summary> /// 创建 Dto 对象映射 /// </summary> public static void CreateDtoMappings(IMapperConfigurationExpression configuration) { //configuration.EnableNullPropagationForQueryMapping = false; //configuration.AllowNullDestinationValues = false; configuration.ForAllMaps((map, c) => { foreach (var property in map.DestinationType.GetProperties()) { var attr = property.GetAttribute <MapFromAttribute>(); if (attr?.PropertyPath?.Length > 0) { c.ForMember(property.Name, m => { var path = string.Join(".", attr.PropertyPath); var exp = DynamicExpressionParser.ParseLambda(map.SourceType, null, path); var m0 = m.GetType() .GetProperty("PropertyMapActions", BindingFlags.Instance | BindingFlags.NonPublic)? .GetValue(m) as List <Action <PropertyMap> >; var m1 = typeof(PropertyMap).GetMethod(nameof(PropertyMap.MapFrom), new Type[] { typeof(LambdaExpression) }); m0?.Add(t => m1.Invoke(t, new object[] { exp })); }); } } }); configuration.CreateMap <Enum, DisplayItem>() .ConvertUsing(p => new DisplayItem { Id = p, Name = p.DisplayName(), Value = p.ToString("G"), ShortName = p.DisplayShortName(), Description = p.DisplayDescription(), GroupName = p.DisplayGroupName(), Order = p.DisplayOrder(), Type = p.DisplayPrompt(), }); configuration.CreateMap <Type, IEnumerable <DisplayItem> >() .ConvertUsing(p => Enum.GetValues(p).Cast <Enum>().Select(t => t.MapTo <DisplayItem>())); configuration.CreateMap <string, JToken>() .ConvertUsing(p => JsonConvert.DeserializeObject <JToken>(p ?? string.Empty)); configuration.CreateMap <string, JObject>() .ConvertUsing(p => JsonConvert.DeserializeObject <JObject>(p ?? string.Empty)); configuration.CreateMap <string, JArray>() .ConvertUsing(p => JsonConvert.DeserializeObject <JArray>(p ?? string.Empty)); configuration.CreateMap <Result.Result, PageInfo>() .ForMember(p => p.PageIndex, m => m.MapFrom(p => p.Code)); }
public virtual void Configure(IMapperConfigurationExpression mapperConfigExpression) { if (mapperConfigExpression == null) { throw new ArgumentNullException(nameof(mapperConfigExpression)); } mapperConfigExpression.ValidateInlineMaps = false; mapperConfigExpression.CreateMissingTypeMaps = true; mapperConfigExpression.ForAllMaps((typeMap, mapExp) => { mapExp.PreserveReferences(); }); }
/// <summary> /// Compiles the options. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="assemblies">The assemblies.</param> /// <param name="cfg">The CFG.</param> private static void CompileOptions <T>(List <Assembly> assemblies, IMapperConfigurationExpression cfg) where T : Profile { var profiles = assemblies.Select(p => p.GetTypes().Where(x => typeof(T).IsAssignableFrom(x) && !x.IsAbstract)); cfg.ConstructServicesUsing((s) => DIResolver.Get(s)); foreach (var assemblyProfiles in profiles) { foreach (var assemblyProfile in assemblyProfiles) { cfg.AddProfile(Activator.CreateInstance(assemblyProfile) as T); } } cfg.ForAllMaps((t, m) => { m.ConstructUsing((x) => resolver(t, x)); }); }
public static void Configure(IMapperConfigurationExpression expression) { expression.AddProfile <ProfileUser>(); expression.AddProfile <ProfileDiscipline>(); expression.AddProfile <ProfileMaterial>(); expression.AddProfile <ProfileGroup>(); expression.AddProfile <ProfileTest>(); expression.AddProfile <ProfileTheme>(); expression.AddProfile <ProfileQuestion>(); expression.AddProfile <ProfileAnswer>(); expression.AddProfile <ProfileProgram>(); expression.AddProfile <ProfileProgramData>(); expression.AddProfile <ProfileRole>(); expression.AddProfile <ProfileFile>(); expression.AddProfile <ProfileCode>(); expression.AddProfile <ProfileMaterialAnchor>(); expression.AllowNullCollections = true; expression.ForAllMaps(Configure); }
private void ConfigAllMap(IMapperConfigurationExpression configuration) { configuration.ForAllMaps((map, c) => { foreach (var property in map.DestinationType.GetProperties()) { var attr = property.GetAttribute <MapFromAttribute>(); if (attr?.PropertyPath?.Length > 0) { c.ForMember(property.Name, m => { var path = string.Join(".", attr.PropertyPath); var exp = System.Linq.Dynamic.DynamicExpression.ParseLambda(map.SourceType, null, path); var m0 = m.GetType() .GetProperty("PropertyMapActions", BindingFlags.Instance | BindingFlags.NonPublic)? .GetValue(m) as List <Action <PropertyMap> >; var m1 = typeof(PropertyMap).GetMethod(nameof(PropertyMap.MapFrom)); m0?.Add(t => m1.Invoke(t, new object[] { exp })); }); } } }); }
private static void ManualConfigurations(IMapperConfigurationExpression cfg) { cfg.AllowNullCollections = true; cfg.DisableConstructorMapping(); cfg.ForAllMaps((typeMap, opt) => { if (!typeof(IKubernetesObject).IsAssignableFrom(typeMap.Types.DestinationType)) { return; } var metadata = typeMap.Types.DestinationType.GetKubernetesTypeMetadata(); opt.ForMember(nameof(IKubernetesObject.ApiVersion), x => x.Ignore()); opt.ForMember(nameof(IKubernetesObject.Kind), x => x.Ignore()); opt.AfterMap((from, to) => { var obj = (IKubernetesObject)to; obj.ApiVersion = !string.IsNullOrEmpty(metadata.Group) ? $"{metadata.Group}/{metadata.ApiVersion}" : metadata.ApiVersion; obj.Kind = metadata.Kind; }); }); cfg.CreateMap <V1Subject, V1alpha1Subject>() .ForMember(dest => dest.ApiVersion, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <Rbacv1beta1Subject, V1alpha1Subject>() .ForMember(dest => dest.ApiVersion, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1Subject, Rbacv1beta1Subject>() .ForMember(dest => dest.ApiGroup, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1alpha1RuntimeClass, V1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Spec.RuntimeHandler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Spec.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Spec.Scheduling)) .ReverseMap(); cfg.CreateMap <V1beta1RuntimeClass, V1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Handler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Scheduling)) .ReverseMap(); cfg.CreateMap <V1alpha1RuntimeClass, V1beta1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Spec.RuntimeHandler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Spec.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Spec.Scheduling)) .ReverseMap(); cfg.CreateMap <V2beta1ResourceMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.CurrentAverageUtilization)) .ForMember(dest => dest.Value, opt => opt.Ignore()); cfg.CreateMap <V2beta1ResourceMetricStatus, V2beta2ResourceMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ResourceMetricStatus, V2beta1ResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetAverageValue != null ? "AverageValue" : "Utilization")) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.TargetAverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2beta2ResourceMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ResourceMetricSource, V2beta1ResourceMetricSource>() .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.Value)); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2PodsMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2PodsMetricStatus, V2beta1PodsMetricStatus>() .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => "AverageValue")) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2PodsMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2PodsMetricSource, V2beta1PodsMetricSource>() .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2ObjectMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2beta2ObjectMetricStatus, V2beta1ObjectMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2MetricTarget>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) .ForMember(x => x.Type, opt => opt.MapFrom((src, dest) => src.TargetValue != null ? "Value" : "AverageValue")); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2ExternalMetricSource>() .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ExternalMetricSource, V2beta1ExternalMetricSource>() .ForMember(x => x.TargetValue, opt => opt.MapFrom(src => src.Target.Value)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.MetricSelector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricStatus, V2beta2ExternalMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ExternalMetricStatus, V2beta1ExternalMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.MetricSelector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricStatus, V2beta2MetricIdentifier>() .ForMember(x => x.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.MetricSelector)) .ReverseMap(); cfg.CreateMap <V2beta1ExternalMetricStatus, V2beta2MetricValueStatus>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetValue != null ? "Value" : "AverageValue")); cfg.CreateMap <V2beta1ObjectMetricSource, V2beta2ObjectMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2beta2ObjectMetricSource, V2beta1ObjectMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Target.Value)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ObjectMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.MetricSelector)); cfg.CreateMap <V2beta2MetricTarget, V2beta1ExternalMetricSource>() // todo: not needed .ForMember(dest => dest.MetricName, opt => opt.Ignore()) .ForMember(dest => dest.MetricSelector, opt => opt.Ignore()) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Value)) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Value)) .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.AverageValue)); cfg.CreateMap <V1beta1CustomResourceConversion, V1WebhookConversion>() .ForMember(dest => dest.ClientConfig, opt => opt.MapFrom(src => src.WebhookClientConfig)) .ReverseMap(); cfg.CreateMap <V1SubjectAccessReviewSpec, V1beta1SubjectAccessReviewSpec>() .ForMember(dest => dest.Group, opt => opt.MapFrom(src => src.Groups)) .ReverseMap(); cfg.CreateMap <V1CustomResourceDefinitionSpec, V1beta1CustomResourceDefinitionSpec>() .ForMember(dest => dest.AdditionalPrinterColumns, opt => opt.Ignore()) .ForMember(dest => dest.Subresources, opt => opt.Ignore()) .ForMember(dest => dest.Validation, opt => opt.Ignore()) .ForMember(dest => dest.Version, opt => opt.Ignore()) .AfterMap((from, to) => { // in v1beta1, if all versions share the same common attributes, they should be declared once at parent level if (to.Versions == null) { return; } if (to.Versions.Select(x => JsonConvert.SerializeObject(x.Schema)).Distinct().Count() == 1) { to.Validation = to.Versions.First().Schema; foreach (var version in to.Versions) { version.Schema = null; } } var allPrintColumnsInAllVersionsTheSame = to.Versions .GroupBy(x => x.Name) .Select(v => v .OrderBy(x => x.Name) .Select(x => x.AdditionalPrinterColumns) .Select(JsonConvert.SerializeObject) .Aggregate(new StringBuilder(), (sb, s) => sb.Append(s), sb => sb.ToString())) .Distinct() .Count() == 1; if (allPrintColumnsInAllVersionsTheSame) { to.AdditionalPrinterColumns = to.Versions[0].AdditionalPrinterColumns; foreach (var version in to.Versions) { version.AdditionalPrinterColumns = null; } } var allSubresourcesInAllVersionsTheSame = to.Versions .GroupBy(x => x.Name) .Select(v => v .OrderBy(x => x.Name) .Select(x => x.Subresources) .Select(JsonConvert.SerializeObject) .Aggregate(new StringBuilder(), (sb, s) => sb.Append(s), sb => sb.ToString())) .Distinct() .Count() == 1; if (allSubresourcesInAllVersionsTheSame) { to.Subresources = to.Versions[0].Subresources; foreach (var version in to.Versions) { version.Subresources = null; } } }) .ReverseMap() .AfterMap((from, to) => { if (from.Validation?.OpenAPIV3Schema != null) { foreach (var version in to.Versions) { version.Schema = (V1CustomResourceValidation)@from.Validation; } } if (from.Subresources != null) { foreach (var version in to.Versions) { version.Subresources = (V1CustomResourceSubresources)@from.Subresources; } } if (from.AdditionalPrinterColumns != null) { foreach (var version in to.Versions) { version.AdditionalPrinterColumns = @from.AdditionalPrinterColumns.Select(x => (V1CustomResourceColumnDefinition)x).ToList(); } } }); cfg.CreateMap <V1CustomResourceConversion, V1beta1CustomResourceConversion>() .ForMember(dest => dest.ConversionReviewVersions, opt => opt.MapFrom(src => src.Webhook.ConversionReviewVersions)) .ForMember(dest => dest.WebhookClientConfig, opt => opt.MapFrom(src => src.Webhook.ClientConfig)) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerSpec, V2beta2HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Metrics, opt => opt.Ignore()) .ForMember(dest => dest.Behavior, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerSpec, V2beta1HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Metrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1HorizontalPodAutoscalerSpec, V2beta2HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Behavior, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerStatus, V2beta1HorizontalPodAutoscalerStatus>() .ForMember(dest => dest.Conditions, opt => opt.Ignore()) .ForMember(dest => dest.CurrentMetrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerStatus, V2beta2HorizontalPodAutoscalerStatus>() .ForMember(dest => dest.Conditions, opt => opt.Ignore()) .ForMember(dest => dest.CurrentMetrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <Corev1EventSeries, V1beta1EventSeries>() .ForMember(dest => dest.LastObservedTime, opt => opt.MapFrom(src => src.LastObservedTime)) .ReverseMap(); cfg.CreateMap <Corev1Event, V1beta1Event>() .ForMember(dest => dest.DeprecatedCount, opt => opt.Ignore()) .ForMember(dest => dest.DeprecatedFirstTimestamp, opt => opt.MapFrom(src => src.FirstTimestamp)) .ForMember(dest => dest.DeprecatedLastTimestamp, opt => opt.MapFrom(src => src.LastTimestamp)) .ForMember(dest => dest.DeprecatedSource, opt => opt.MapFrom(src => src.Source)) .ForMember(dest => dest.Note, opt => opt.MapFrom(src => src.Message)) .ForMember(dest => dest.Regarding, opt => opt.MapFrom(src => src.InvolvedObject)) .ForMember(dest => dest.ReportingController, opt => opt.MapFrom(src => src.ReportingComponent)) .ReverseMap(); cfg.CreateMap <V2beta2ContainerResourceMetricSource, V2beta1ContainerResourceMetricSource>() .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ReverseMap(); cfg.CreateMap <V2beta2ContainerResourceMetricStatus, V2beta1ContainerResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)) .ReverseMap(); cfg.CreateMap <V1alpha1RoleBinding, V1beta1RoleBinding>().ReverseMap(); cfg.CreateMap <V1alpha1RoleBinding, V1RoleBinding>().ReverseMap(); cfg.CreateMap <V1beta1RoleBinding, V1RoleBinding>().ReverseMap(); cfg.CreateMap <V1beta1CSIDriverSpec, V1CSIDriverSpec>() .ForMember(dest => dest.TokenRequests, opt => opt.Ignore()); cfg.CreateMap <V1CSIDriverSpec, V1beta1CSIDriverSpec>() .ForMember(dest => dest.TokenRequests, opt => opt.Ignore()); cfg.CreateMap <V1alpha1ClusterRoleBinding, V1beta1ClusterRoleBinding>().ReverseMap(); cfg.CreateMap <V1alpha1ClusterRoleBinding, V1ClusterRoleBinding>().ReverseMap(); cfg.CreateMap <V1beta1ClusterRoleBinding, V1ClusterRoleBinding>().ReverseMap(); cfg.CreateMap <V1alpha1ClusterRoleBindingList, V1beta1ClusterRoleBindingList>().ReverseMap(); cfg.CreateMap <V1alpha1ClusterRoleBindingList, V1ClusterRoleBindingList>().ReverseMap(); cfg.CreateMap <V1beta1ClusterRoleBindingList, V1ClusterRoleBindingList>().ReverseMap(); cfg.CreateMap <V1beta1Endpoint, V1Endpoint>() .ForMember(dest => dest.DeprecatedTopology, opt => opt.Ignore()) .ForMember(dest => dest.Zone, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1beta1EndpointPort, Discoveryv1EndpointPort>() .ReverseMap(); }
private static void ManualConfigurations(IMapperConfigurationExpression cfg) { cfg.AllowNullCollections = true; cfg.DisableConstructorMapping(); cfg.ForAllMaps((typeMap, opt) => { if (!typeof(IKubernetesObject).IsAssignableFrom(typeMap.Types.DestinationType)) { return; } var metadata = typeMap.Types.DestinationType.GetKubernetesTypeMetadata(); opt.ForMember(nameof(IKubernetesObject.ApiVersion), x => x.Ignore()); opt.ForMember(nameof(IKubernetesObject.Kind), x => x.Ignore()); opt.AfterMap((from, to) => { var obj = (IKubernetesObject)to; obj.ApiVersion = !string.IsNullOrEmpty(metadata.Group) ? $"{metadata.Group}/{metadata.ApiVersion}" : metadata.ApiVersion; obj.Kind = metadata.Kind; }); }); cfg.CreateMap <V1Subject, V1beta1Subject>() .ForMember(dest => dest.Group, opt => opt.Ignore()) .ForMember(dest => dest.ServiceAccount, opt => opt.Ignore()) .ForMember(dest => dest.User, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1Subject, V1beta2Subject>() .ForMember(dest => dest.Group, opt => opt.Ignore()) .ForMember(dest => dest.ServiceAccount, opt => opt.Ignore()) .ForMember(dest => dest.User, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1alpha1RuntimeClass, V1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Spec.RuntimeHandler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Spec.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Spec.Scheduling)) .ReverseMap(); cfg.CreateMap <V1beta1RuntimeClass, V1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Handler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Scheduling)) .ReverseMap(); cfg.CreateMap <V1alpha1RuntimeClass, V1beta1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Spec.RuntimeHandler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Spec.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Spec.Scheduling)) .ReverseMap(); cfg.CreateMap <V2beta1ResourceMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.CurrentAverageUtilization)) .ForMember(dest => dest.Value, opt => opt.Ignore()); cfg.CreateMap <V2beta1ResourceMetricStatus, V2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.CurrentAverageUtilization)) .ForMember(dest => dest.Value, opt => opt.Ignore()); cfg.CreateMap <V2beta1ResourceMetricStatus, V2beta2ResourceMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ResourceMetricStatus, V2beta1ResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricStatus, V2ResourceMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2ResourceMetricStatus, V2beta1ResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetAverageValue != null ? "AverageValue" : "Utilization")) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.TargetAverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetAverageValue != null ? "AverageValue" : "Utilization")) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.TargetAverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2beta2ResourceMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ResourceMetricSource, V2beta1ResourceMetricSource>() .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.Value)); cfg.CreateMap <V2beta1ResourceMetricSource, V2ResourceMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2ResourceMetricSource, V2beta1ResourceMetricSource>() .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.Value)); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricStatus, V2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)); cfg.CreateMap <V2beta1PodsMetricStatus, V2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2PodsMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2PodsMetricStatus, V2beta1PodsMetricStatus>() .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)); cfg.CreateMap <V2beta1PodsMetricStatus, V2PodsMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2PodsMetricStatus, V2beta1PodsMetricStatus>() .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1PodsMetricSource, V2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => "AverageValue")) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricSource, V2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => "AverageValue")) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2PodsMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2PodsMetricSource, V2beta1PodsMetricSource>() .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)); cfg.CreateMap <V2beta1PodsMetricSource, V2PodsMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2PodsMetricSource, V2beta1PodsMetricSource>() .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2MetricValueStatus>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2ObjectMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2beta2ObjectMetricStatus, V2beta1ObjectMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ObjectMetricStatus, V2ObjectMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2ObjectMetricStatus, V2beta1ObjectMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2MetricTarget>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) .ForMember(x => x.Type, opt => opt.MapFrom((src, dest) => src.TargetValue != null ? "Value" : "AverageValue")); cfg.CreateMap <V2beta1ExternalMetricSource, V2MetricTarget>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) .ForMember(x => x.Type, opt => opt.MapFrom((src, dest) => src.TargetValue != null ? "Value" : "AverageValue")); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2ExternalMetricSource>() .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ExternalMetricSource, V2beta1ExternalMetricSource>() .ForMember(x => x.TargetValue, opt => opt.MapFrom(src => src.Target.Value)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.MetricSelector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricSource, V2ExternalMetricSource>() .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2ExternalMetricSource, V2beta1ExternalMetricSource>() .ForMember(x => x.TargetValue, opt => opt.MapFrom(src => src.Target.Value)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.MetricSelector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricStatus, V2beta2ExternalMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ExternalMetricStatus, V2beta1ExternalMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.MetricSelector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricStatus, V2ExternalMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2ExternalMetricStatus, V2beta1ExternalMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.MetricSelector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricStatus, V2beta2MetricIdentifier>() .ForMember(x => x.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.MetricSelector)) .ReverseMap(); cfg.CreateMap <V2beta1ExternalMetricStatus, V2MetricIdentifier>() .ForMember(x => x.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.MetricSelector)) .ReverseMap(); cfg.CreateMap <V2beta1ExternalMetricStatus, V2beta2MetricValueStatus>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ExternalMetricStatus, V2MetricValueStatus>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetValue != null ? "Value" : "AverageValue")); cfg.CreateMap <V2beta1ObjectMetricSource, V2MetricTarget>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetValue != null ? "Value" : "AverageValue")); cfg.CreateMap <V2beta1ObjectMetricSource, V2beta2ObjectMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2beta2ObjectMetricSource, V2beta1ObjectMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Target.Value)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ObjectMetricSource, V2ObjectMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2ObjectMetricSource, V2beta1ObjectMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Target.Value)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ObjectMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricSource, V2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.MetricSelector)); cfg.CreateMap <V2beta1ExternalMetricSource, V2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.MetricSelector)); cfg.CreateMap <V2beta2MetricTarget, V2beta1ExternalMetricSource>() // todo: not needed .ForMember(dest => dest.MetricName, opt => opt.Ignore()) .ForMember(dest => dest.MetricSelector, opt => opt.Ignore()) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Value)) .ForMember(dest => dest.TargetValue, opt => opt.MapFrom(src => src.Value)) .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.AverageValue)); cfg.CreateMap <V1HorizontalPodAutoscalerSpec, V2beta2HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Metrics, opt => opt.Ignore()) .ForMember(dest => dest.Behavior, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerSpec, V2HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Metrics, opt => opt.Ignore()) .ForMember(dest => dest.Behavior, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerSpec, V2beta1HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Metrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1HorizontalPodAutoscalerSpec, V2beta2HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Behavior, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1HorizontalPodAutoscalerSpec, V2HorizontalPodAutoscalerSpec>() .ForMember(dest => dest.Behavior, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerStatus, V2beta1HorizontalPodAutoscalerStatus>() .ForMember(dest => dest.Conditions, opt => opt.Ignore()) .ForMember(dest => dest.CurrentMetrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerStatus, V2beta2HorizontalPodAutoscalerStatus>() .ForMember(dest => dest.Conditions, opt => opt.Ignore()) .ForMember(dest => dest.CurrentMetrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1HorizontalPodAutoscalerStatus, V2HorizontalPodAutoscalerStatus>() .ForMember(dest => dest.Conditions, opt => opt.Ignore()) .ForMember(dest => dest.CurrentMetrics, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <Corev1EventSeries, V1beta1EventSeries>() .ForMember(dest => dest.LastObservedTime, opt => opt.MapFrom(src => src.LastObservedTime)) .ReverseMap(); cfg.CreateMap <Corev1Event, V1beta1Event>() .ForMember(dest => dest.DeprecatedCount, opt => opt.Ignore()) .ForMember(dest => dest.DeprecatedFirstTimestamp, opt => opt.MapFrom(src => src.FirstTimestamp)) .ForMember(dest => dest.DeprecatedLastTimestamp, opt => opt.MapFrom(src => src.LastTimestamp)) .ForMember(dest => dest.DeprecatedSource, opt => opt.MapFrom(src => src.Source)) .ForMember(dest => dest.Note, opt => opt.MapFrom(src => src.Message)) .ForMember(dest => dest.Regarding, opt => opt.MapFrom(src => src.InvolvedObject)) .ForMember(dest => dest.ReportingController, opt => opt.MapFrom(src => src.ReportingComponent)) .ReverseMap(); cfg.CreateMap <V2beta2ContainerResourceMetricSource, V2beta1ContainerResourceMetricSource>() .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ReverseMap(); cfg.CreateMap <V2ContainerResourceMetricSource, V2beta1ContainerResourceMetricSource>() .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)) .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ReverseMap(); cfg.CreateMap <V2beta2ContainerResourceMetricStatus, V2beta1ContainerResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)) .ReverseMap(); cfg.CreateMap <V2ContainerResourceMetricStatus, V2beta1ContainerResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)) .ReverseMap(); cfg.CreateMap <V1beta1Endpoint, V1Endpoint>() .ForMember(dest => dest.DeprecatedTopology, opt => opt.Ignore()) .ForMember(dest => dest.Zone, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1beta1EndpointPort, Discoveryv1EndpointPort>() .ReverseMap(); }
private static void ManualConfigurations(IMapperConfigurationExpression cfg) { cfg.AllowNullCollections = true; cfg.DisableConstructorMapping(); cfg.ForAllMaps((typeMap, opt) => { if (!typeof(IKubernetesObject).IsAssignableFrom(typeMap.Types.DestinationType)) { return; } var metadata = typeMap.Types.DestinationType.GetKubernetesTypeMetadata(); opt.ForMember(nameof(IKubernetesObject.ApiVersion), x => x.Ignore()); opt.ForMember(nameof(IKubernetesObject.Kind), x => x.Ignore()); opt.AfterMap((from, to) => { var obj = (IKubernetesObject)to; obj.ApiVersion = !string.IsNullOrEmpty(metadata.Group) ? $"{metadata.Group}/{metadata.ApiVersion}" : metadata.ApiVersion; obj.Kind = metadata.Kind; }); }); cfg.CreateMap <V1Subject, Rbacv1alpha1Subject>() .ForMember(dest => dest.ApiVersion, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1beta1Subject, Rbacv1alpha1Subject>() .ForMember(dest => dest.ApiVersion, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V1alpha1RuntimeClass, V1beta1RuntimeClass>() .ForMember(dest => dest.Handler, opt => opt.MapFrom(src => src.Spec.RuntimeHandler)) .ForMember(dest => dest.Overhead, opt => opt.MapFrom(src => src.Spec.Overhead)) .ForMember(dest => dest.Scheduling, opt => opt.MapFrom(src => src.Spec.Scheduling)) .ReverseMap(); cfg.CreateMap <V2beta1ResourceMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.CurrentAverageUtilization)) .ForMember(dest => dest.Value, opt => opt.Ignore()); cfg.CreateMap <V2beta1ResourceMetricStatus, V2beta2ResourceMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ResourceMetricStatus, V2beta1ResourceMetricStatus>() .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.CurrentAverageUtilization, opt => opt.MapFrom(src => src.Current.AverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) #if NET452 .ForMember(dest => dest.Type, opt => opt.ResolveUsing(src => src.TargetAverageValue != null ? "AverageValue" : "Utilization")) #else .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => src.TargetAverageValue != null ? "AverageValue" : "Utilization")) #endif .ForMember(dest => dest.AverageUtilization, opt => opt.MapFrom(src => src.TargetAverageUtilization)); cfg.CreateMap <V2beta1ResourceMetricSource, V2beta2ResourceMetricSource>() .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2ResourceMetricSource, V2beta1ResourceMetricSource>() .ForMember(dest => dest.TargetAverageUtilization, opt => opt.MapFrom(src => src.Target.AverageUtilization)) .ForMember(dest => dest.TargetAverageValue, opt => opt.MapFrom(src => src.Target.Value)); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.CurrentAverageValue)) .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)); cfg.CreateMap <V2beta1PodsMetricStatus, V2beta2PodsMetricStatus>() .ForMember(dest => dest.Current, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2PodsMetricStatus, V2beta1PodsMetricStatus>() .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(dest => dest.CurrentAverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(dest => dest.MetricName, opt => opt.MapFrom(src => src.Metric.Name)); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2MetricTarget>() .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) #if NET452 .ForMember(dest => dest.Type, opt => opt.UseValue("AverageValue")) #else .ForMember(dest => dest.Type, opt => opt.MapFrom((src, dest) => "AverageValue")) #endif .ForMember(dest => dest.Value, opt => opt.Ignore()) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()); cfg.CreateMap <V2beta1PodsMetricSource, V2beta2PodsMetricSource>() .ForMember(dest => dest.Metric, opt => opt.MapFrom(src => src)) .ForMember(dest => dest.Target, opt => opt.MapFrom(src => src)); cfg.CreateMap <V2beta2PodsMetricSource, V2beta1PodsMetricSource>() .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.TargetAverageValue, opt => opt.MapFrom(src => src.Target.AverageValue)); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2MetricIdentifier>() .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.MetricName)) .ForMember(dest => dest.Selector, opt => opt.MapFrom(src => src.Selector)) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2MetricValueStatus>() .ForMember(dest => dest.Value, opt => opt.MapFrom(src => src.CurrentValue)) .ForMember(dest => dest.AverageValue, opt => opt.MapFrom(src => src.AverageValue)) .ForMember(dest => dest.AverageUtilization, opt => opt.Ignore()) .ReverseMap(); cfg.CreateMap <V2beta1ObjectMetricStatus, V2beta2ObjectMetricStatus>() .ForMember(x => x.Current, opt => opt.MapFrom(src => src)) .ForMember(x => x.Metric, opt => opt.MapFrom(src => src)) .ForMember(x => x.DescribedObject, opt => opt.MapFrom(src => src.Target)); cfg.CreateMap <V2beta2ObjectMetricStatus, V2beta1ObjectMetricStatus>() .ForMember(x => x.CurrentValue, opt => opt.MapFrom(src => src.Current.Value)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.Current.AverageValue)) .ForMember(x => x.MetricName, opt => opt.MapFrom(src => src.Metric.Name)) .ForMember(x => x.Target, opt => opt.MapFrom(src => src.DescribedObject)) .ForMember(x => x.Selector, opt => opt.MapFrom(src => src.Metric.Selector)); cfg.CreateMap <V2beta1ExternalMetricSource, V2beta2MetricTarget>() .ForMember(x => x.Value, opt => opt.MapFrom(src => src.TargetValue)) .ForMember(x => x.AverageValue, opt => opt.MapFrom(src => src.TargetAverageValue)) .ForMember(x => x.AverageUtilization, opt => opt.Ignore()) #if NET452 .ForMember(x => x.Type, opt => opt.ResolveUsing(src => src.TargetValue != null ? "Value" : "AverageValue"));