in pkg/cluster/spec.go [172:254]
func NewSpecFromClusterConfig(clusterConfigPath string, cliVersion version.Info, opts ...SpecOpt) (*Spec, error) {
s := newWithCliVersion(cliVersion, opts...)
clusterConfig, err := eksav1alpha1.GetClusterConfig(clusterConfigPath)
if err != nil {
return nil, err
}
bundles, err := s.GetBundles(cliVersion)
if err != nil {
return nil, err
}
versionsBundle, err := s.getVersionsBundle(clusterConfig, bundles)
if err != nil {
return nil, err
}
eksd, err := s.reader.GetEksdRelease(versionsBundle)
if err != nil {
return nil, err
}
kubeDistro, err := buildKubeDistro(eksd)
if err != nil {
return nil, err
}
s.Bundles = bundles
s.Cluster = clusterConfig
s.VersionsBundle = &VersionsBundle{
VersionsBundle: versionsBundle,
KubeDistro: kubeDistro,
}
s.eksdRelease = eksd
for _, identityProvider := range s.Cluster.Spec.IdentityProviderRefs {
switch identityProvider.Kind {
case eksav1alpha1.OIDCConfigKind:
oidcConfig, err := eksav1alpha1.GetAndValidateOIDCConfig(clusterConfigPath, identityProvider.Name, clusterConfig)
if err != nil {
return nil, err
}
s.OIDCConfig = oidcConfig
case eksav1alpha1.AWSIamConfigKind:
awsIamConfig, err := eksav1alpha1.GetAndValidateAWSIamConfig(clusterConfigPath, identityProvider.Name, clusterConfig)
if err != nil {
return nil, err
}
s.AWSIamConfig = awsIamConfig
}
}
if s.Cluster.Spec.GitOpsRef != nil {
gitOpsConfig, err := eksav1alpha1.GetAndValidateGitOpsConfig(clusterConfigPath, s.Cluster.Spec.GitOpsRef.Name, clusterConfig)
if err != nil {
return nil, err
}
s.GitOpsConfig = gitOpsConfig
}
switch s.Cluster.Spec.DatacenterRef.Kind {
case eksav1alpha1.VSphereDatacenterKind:
datacenterConfig, err := eksav1alpha1.GetVSphereDatacenterConfig(clusterConfigPath)
if err != nil {
return nil, err
}
s.DatacenterConfig = &datacenterConfig.ObjectMeta
case eksav1alpha1.DockerDatacenterKind:
datacenterConfig, err := eksav1alpha1.GetDockerDatacenterConfig(clusterConfigPath)
if err != nil {
return nil, err
}
s.DatacenterConfig = &datacenterConfig.ObjectMeta
}
if s.ManagementCluster != nil {
s.SetManagedBy(s.ManagementCluster.Name)
} else {
s.SetSelfManaged()
}
return s, nil
}