talos/internal/integration/k8s/version.go
Andrey Smirnov bddd4f1bf6 refactor: move external API packages into machinery/
This moves `pkg/config`, `pkg/client` and `pkg/constants`
under `pkg/machinery` umbrella.

And `pkg/machinery` is published as Go module inside Talos repository.

Signed-off-by: Andrey Smirnov <smirnov.andrey@gmail.com>
2020-08-17 09:56:14 -07:00

63 lines
2.1 KiB
Go

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// +build integration_k8s
package k8s
import (
"context"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"github.com/talos-systems/talos/internal/integration/base"
"github.com/talos-systems/talos/pkg/machinery/constants"
)
// VersionSuite verifies Talos version.
type VersionSuite struct {
base.K8sSuite
}
// SuiteName ...
func (suite *VersionSuite) SuiteName() string {
return "k8s.VersionSuite"
}
// TestExpectedVersion verifies that node versions matches expected.
func (suite *VersionSuite) TestExpectedVersion() {
// verify k8s version (api server)
apiServerVersion, err := suite.DiscoveryClient.ServerVersion()
suite.Require().NoError(err)
expectedApiServerVersion := fmt.Sprintf("v%s", constants.DefaultKubernetesVersion)
suite.Assert().Equal(expectedApiServerVersion, apiServerVersion.GitVersion)
checkKernelVersion := suite.Capabilities().RunsTalosKernel
// verify each node (kubelet version, Talos version, etc.)
nodes, err := suite.Clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
suite.Require().NoError(err)
expectedTalosVersion := fmt.Sprintf("Talos (%s)", suite.Version)
expectedContainerRuntimeVersion := fmt.Sprintf("containerd://%s", constants.DefaultContainerdVersion)
expectedKubeletVersion := fmt.Sprintf("v%s", constants.DefaultKubernetesVersion)
expectedKernelVersion := constants.DefaultKernelVersion
for _, node := range nodes.Items {
suite.Assert().Equal(expectedTalosVersion, node.Status.NodeInfo.OSImage)
suite.Assert().Equal("linux", node.Status.NodeInfo.OperatingSystem)
suite.Assert().Equal(expectedContainerRuntimeVersion, node.Status.NodeInfo.ContainerRuntimeVersion)
suite.Assert().Equal(expectedKubeletVersion, node.Status.NodeInfo.KubeletVersion)
if checkKernelVersion {
suite.Assert().Equal(expectedKernelVersion, node.Status.NodeInfo.KernelVersion)
}
}
}
func init() {
allSuites = append(allSuites, new(VersionSuite))
}