@@ -39,15 +39,59 @@ import (
3939type OptionsContext struct {
4040 ClusterName string
4141
42+ // Deprecated: Prefer using NodeKubernetesVersion() and ControlPlaneKubernetesVersion()
4243 KubernetesVersion semver.Version
4344
4445 AssetBuilder * assets.AssetBuilder
46+
47+ nodeKubernetesVersion kopsmodel.KubernetesVersion
48+ controlPlaneKubernetesVersion kopsmodel.KubernetesVersion
49+ }
50+
51+ func NewOptionsContext (cluster * kops.Cluster , assetBuilder * assets.AssetBuilder , maxKubeletSupportedVersion string ) (* OptionsContext , error ) {
52+ optionsContext := & OptionsContext {
53+ ClusterName : cluster .ObjectMeta .Name ,
54+ AssetBuilder : assetBuilder ,
55+ }
56+
57+ sv , err := util .ParseKubernetesVersion (cluster .Spec .KubernetesVersion )
58+ if err != nil {
59+ return nil , fmt .Errorf ("unable to determine kubernetes version from %q" , cluster .Spec .KubernetesVersion )
60+ }
61+ optionsContext .KubernetesVersion = * sv
62+
63+ controlPlaneKubernetesVersion , err := kopsmodel .ParseKubernetesVersion (cluster .Spec .KubernetesVersion )
64+ if err != nil {
65+ return nil , fmt .Errorf ("unable to determine kubernetes version from %q: %w" , cluster .Spec .KubernetesVersion , err )
66+ }
67+ nodeKubernetesVersion := controlPlaneKubernetesVersion
68+ if maxKubeletSupportedVersion != "" {
69+ nodeKubernetesVersion , err = kopsmodel .ParseKubernetesVersion (maxKubeletSupportedVersion )
70+ if err != nil {
71+ return nil , fmt .Errorf ("unable to determine kubernetes version from %q: %w" , maxKubeletSupportedVersion , err )
72+ }
73+ }
74+
75+ optionsContext .nodeKubernetesVersion = * nodeKubernetesVersion
76+ optionsContext .controlPlaneKubernetesVersion = * controlPlaneKubernetesVersion
77+
78+ return optionsContext , nil
79+ }
80+
81+ func (c * OptionsContext ) NodeKubernetesVersion () kopsmodel.KubernetesVersion {
82+ return c .nodeKubernetesVersion
83+ }
84+
85+ func (c * OptionsContext ) ControlPlaneKubernetesVersion () kopsmodel.KubernetesVersion {
86+ return c .controlPlaneKubernetesVersion
4587}
4688
89+ // Deprecated: prefer using NodeKubernetesVersion() and ControlPlaneKubernetesVersion()
4790func (c * OptionsContext ) IsKubernetesGTE (version string ) bool {
4891 return util .IsKubernetesGTE (version , c .KubernetesVersion )
4992}
5093
94+ // Deprecated: prefer using NodeKubernetesVersion() and ControlPlaneKubernetesVersion()
5195func (c * OptionsContext ) IsKubernetesLT (version string ) bool {
5296 return ! c .IsKubernetesGTE (version )
5397}
0 commit comments