Fix convertion generator for manually written ones

This commit is contained in:
Wojciech Tyczynski 2015-05-14 12:57:02 +02:00
parent 5010b2dde0
commit b52a4e60fc
3 changed files with 84 additions and 3 deletions

View File

@ -1377,6 +1377,42 @@ func convert_api_ListMeta_To_v1_ListMeta(in *newer.ListMeta, out *ListMeta, s co
return nil
}
func convert_v1_ListOptions_To_api_ListOptions(in *ListOptions, out *newer.ListOptions, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ListOptions))(in)
}
if err := convert_v1_TypeMeta_To_api_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
if err := s.Convert(&in.LabelSelector, &out.LabelSelector, 0); err != nil {
return err
}
if err := s.Convert(&in.FieldSelector, &out.FieldSelector, 0); err != nil {
return err
}
out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion
return nil
}
func convert_api_ListOptions_To_v1_ListOptions(in *newer.ListOptions, out *ListOptions, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*newer.ListOptions))(in)
}
if err := convert_api_TypeMeta_To_v1_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
if err := s.Convert(&in.LabelSelector, &out.LabelSelector, 0); err != nil {
return err
}
if err := s.Convert(&in.FieldSelector, &out.FieldSelector, 0); err != nil {
return err
}
out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion
return nil
}
func convert_v1_NFSVolumeSource_To_api_NFSVolumeSource(in *NFSVolumeSource, out *newer.NFSVolumeSource, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*NFSVolumeSource))(in)
@ -4269,6 +4305,7 @@ func init() {
convert_api_LimitRangeSpec_To_v1_LimitRangeSpec,
convert_api_LimitRange_To_v1_LimitRange,
convert_api_ListMeta_To_v1_ListMeta,
convert_api_ListOptions_To_v1_ListOptions,
convert_api_List_To_v1_List,
convert_api_NFSVolumeSource_To_v1_NFSVolumeSource,
convert_api_NamespaceList_To_v1_NamespaceList,
@ -4377,6 +4414,7 @@ func init() {
convert_v1_LimitRangeSpec_To_api_LimitRangeSpec,
convert_v1_LimitRange_To_api_LimitRange,
convert_v1_ListMeta_To_api_ListMeta,
convert_v1_ListOptions_To_api_ListOptions,
convert_v1_List_To_api_List,
convert_v1_NFSVolumeSource_To_api_NFSVolumeSource,
convert_v1_NamespaceList_To_api_NamespaceList,

View File

@ -1377,6 +1377,42 @@ func convert_api_ListMeta_To_v1beta3_ListMeta(in *newer.ListMeta, out *ListMeta,
return nil
}
func convert_v1beta3_ListOptions_To_api_ListOptions(in *ListOptions, out *newer.ListOptions, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*ListOptions))(in)
}
if err := convert_v1beta3_TypeMeta_To_api_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
if err := s.Convert(&in.LabelSelector, &out.LabelSelector, 0); err != nil {
return err
}
if err := s.Convert(&in.FieldSelector, &out.FieldSelector, 0); err != nil {
return err
}
out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion
return nil
}
func convert_api_ListOptions_To_v1beta3_ListOptions(in *newer.ListOptions, out *ListOptions, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*newer.ListOptions))(in)
}
if err := convert_api_TypeMeta_To_v1beta3_TypeMeta(&in.TypeMeta, &out.TypeMeta, s); err != nil {
return err
}
if err := s.Convert(&in.LabelSelector, &out.LabelSelector, 0); err != nil {
return err
}
if err := s.Convert(&in.FieldSelector, &out.FieldSelector, 0); err != nil {
return err
}
out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion
return nil
}
func convert_v1beta3_NFSVolumeSource_To_api_NFSVolumeSource(in *NFSVolumeSource, out *newer.NFSVolumeSource, s conversion.Scope) error {
if defaulting, found := s.DefaultingInterface(reflect.TypeOf(*in)); found {
defaulting.(func(*NFSVolumeSource))(in)
@ -4269,6 +4305,7 @@ func init() {
convert_api_LimitRangeSpec_To_v1beta3_LimitRangeSpec,
convert_api_LimitRange_To_v1beta3_LimitRange,
convert_api_ListMeta_To_v1beta3_ListMeta,
convert_api_ListOptions_To_v1beta3_ListOptions,
convert_api_List_To_v1beta3_List,
convert_api_NFSVolumeSource_To_v1beta3_NFSVolumeSource,
convert_api_NamespaceList_To_v1beta3_NamespaceList,
@ -4377,6 +4414,7 @@ func init() {
convert_v1beta3_LimitRangeSpec_To_api_LimitRangeSpec,
convert_v1beta3_LimitRange_To_api_LimitRange,
convert_v1beta3_ListMeta_To_api_ListMeta,
convert_v1beta3_ListOptions_To_api_ListOptions,
convert_v1beta3_List_To_api_List,
convert_v1beta3_NFSVolumeSource_To_api_NFSVolumeSource,
convert_v1beta3_NamespaceList_To_api_NamespaceList,

View File

@ -81,6 +81,9 @@ func (g *generator) generateConversionsBetween(inType, outType reflect.Type) err
}
if inType.Kind() != outType.Kind() {
if existingConversion {
return nil
}
return fmt.Errorf("cannot convert types of different kinds: %v %v", inType, outType)
}
// We should be able to generate conversions both sides.
@ -173,9 +176,6 @@ func (g *generator) generateConversionsForStruct(inType, outType reflect.Type) e
if !found {
return fmt.Errorf("couldn't find a corresponding field %v in %v", inField.Name, outType)
}
if inField.Type.Kind() != outField.Type.Kind() {
return fmt.Errorf("cannot convert types of different kinds: %v %v", inField, outField)
}
if isComplexType(inField.Type) {
if err := g.generateConversionsBetween(inField.Type, outField.Type); err != nil {
return err
@ -733,6 +733,11 @@ func (g *generator) existsDedicatedConversionFunction(inType, outType reflect.Ty
return false
}
}
if inType.Kind() != outType.Kind() {
// TODO(wojtek-t): Currently all conversions between types of different kinds are
// unnamed. Thus we return false here.
return false
}
return g.scheme.Converter().HasConversionFunc(inType, outType)
}