diff --git a/internal/cluster/cluster.go b/internal/cluster/cluster.go index 421b2ada91f1..8b1f0bcc33b6 100644 --- a/internal/cluster/cluster.go +++ b/internal/cluster/cluster.go @@ -1029,26 +1029,6 @@ func (m *Manager) GetClusterByKubeKey(key types.NamespacedName) (*common.Cluster return c, nil } -func isVmware(host *models.Host) (bool, error) { - var inventory models.Inventory - if err := json.Unmarshal([]byte(host.Inventory), &inventory); err != nil { - return false, errors.Wrapf(err, "Could not unmarshal inventory for host %s", host.ID.String()) - } - return inventory.SystemVendor != nil && strings.Contains(strings.ToLower(inventory.SystemVendor.Manufacturer), "vmware"), nil -} - -func hasVmwareHosts(cluster *common.Cluster) (bool, error) { - ret := false - for _, h := range cluster.Hosts { - vmwareHost, err := isVmware(h) - if err != nil { - return false, err - } - ret = ret || vmwareHost - } - return ret, nil -} - func (m *Manager) GenerateAdditionalManifests(ctx context.Context, cluster *common.Cluster) error { log := logutil.FromContext(ctx, m.log) if err := m.manifestsGeneratorAPI.AddChronyManifest(ctx, log, cluster); err != nil { @@ -1064,16 +1044,6 @@ func (m *Manager) GenerateAdditionalManifests(ctx context.Context, cluster *comm if err := m.rp.operatorsAPI.GenerateManifests(ctx, cluster); err != nil { return errors.Wrap(err, "failed to add operator manifests") } - clusterHasVmwareHosts, err := hasVmwareHosts(cluster) - if err != nil { - return errors.Wrapf(err, "Failed to find if cluster %s has vmware hosts", cluster.ID.String()) - } - if clusterHasVmwareHosts { - if err = m.manifestsGeneratorAPI.AddDisableVmwareTunnelOffloading(ctx, log, cluster); err != nil { - return errors.Wrapf(err, "Cluster %s - failed to generate manifests for vmware hosts", cluster.ID.String()) - } - } - if err := m.manifestsGeneratorAPI.AddTelemeterManifest(ctx, log, cluster); err != nil { return errors.Wrap(err, "failed to add telemeter manifest") } diff --git a/internal/cluster/cluster_test.go b/internal/cluster/cluster_test.go index 0e1833c98951..bb67306f55c5 100644 --- a/internal/cluster/cluster_test.go +++ b/internal/cluster/cluster_test.go @@ -2311,77 +2311,6 @@ var _ = Describe("GenerateAdditionalManifests", func() { Expect(err).To(Not(HaveOccurred())) }) - Context("Vmware", func() { - It("Single host", func() { - cfg2 := getDefaultConfig() - cfg2.EnableSingleNodeDnsmasq = false - capi = NewManager(cfg2, common.GetTestLog(), db, eventsHandler, nil, mockMetric, manifestsGenerator, nil, mockOperatorMgr, nil, nil, nil) - manifestsGenerator.EXPECT().AddChronyManifest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddDisableVmwareTunnelOffloading(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddTelemeterManifest(ctx, gomock.Any(), &c).Return(nil) - mockOperatorMgr.EXPECT().GenerateManifests(gomock.Any(), gomock.Any()).Return(nil).Times(1) - c.HighAvailabilityMode = swag.String(models.ClusterHighAvailabilityModeFull) - - c.Hosts = append(c.Hosts, &models.Host{ - Inventory: common.GenerateTestDefaultVmwareInventory(), - }) - err := capi.GenerateAdditionalManifests(ctx, &c) - Expect(err).To(Not(HaveOccurred())) - }) - It("2 hosts", func() { - cfg2 := getDefaultConfig() - cfg2.EnableSingleNodeDnsmasq = false - capi = NewManager(cfg2, common.GetTestLog(), db, eventsHandler, nil, mockMetric, manifestsGenerator, nil, mockOperatorMgr, nil, nil, nil) - manifestsGenerator.EXPECT().AddChronyManifest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddDisableVmwareTunnelOffloading(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddTelemeterManifest(ctx, gomock.Any(), &c).Return(nil) - mockOperatorMgr.EXPECT().GenerateManifests(gomock.Any(), gomock.Any()).Return(nil).Times(1) - c.HighAvailabilityMode = swag.String(models.ClusterHighAvailabilityModeFull) - - for i := 0; i != 2; i++ { - c.Hosts = append(c.Hosts, &models.Host{ - Inventory: common.GenerateTestDefaultVmwareInventory(), - }) - } - err := capi.GenerateAdditionalManifests(ctx, &c) - Expect(err).To(Not(HaveOccurred())) - }) - It("Mixed", func() { - cfg2 := getDefaultConfig() - cfg2.EnableSingleNodeDnsmasq = false - capi = NewManager(cfg2, common.GetTestLog(), db, eventsHandler, nil, mockMetric, manifestsGenerator, nil, mockOperatorMgr, nil, nil, nil) - manifestsGenerator.EXPECT().AddChronyManifest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddDisableVmwareTunnelOffloading(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddTelemeterManifest(ctx, gomock.Any(), &c).Return(nil) - mockOperatorMgr.EXPECT().GenerateManifests(gomock.Any(), gomock.Any()).Return(nil).Times(1) - c.HighAvailabilityMode = swag.String(models.ClusterHighAvailabilityModeFull) - - c.Hosts = append(c.Hosts, &models.Host{ - Inventory: common.GenerateTestDefaultVmwareInventory(), - }) - c.Hosts = append(c.Hosts, &models.Host{ - Inventory: common.GenerateTestDefaultInventory(), - }) - err := capi.GenerateAdditionalManifests(ctx, &c) - Expect(err).To(Not(HaveOccurred())) - }) - It("No VMWARE", func() { - cfg2 := getDefaultConfig() - cfg2.EnableSingleNodeDnsmasq = false - capi = NewManager(cfg2, common.GetTestLog(), db, eventsHandler, nil, mockMetric, manifestsGenerator, nil, mockOperatorMgr, nil, nil, nil) - manifestsGenerator.EXPECT().AddChronyManifest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil).Times(1) - manifestsGenerator.EXPECT().AddTelemeterManifest(ctx, gomock.Any(), &c).Return(nil) - mockOperatorMgr.EXPECT().GenerateManifests(gomock.Any(), gomock.Any()).Return(nil).Times(1) - c.HighAvailabilityMode = swag.String(models.ClusterHighAvailabilityModeFull) - - c.Hosts = append(c.Hosts, &models.Host{ - Inventory: common.GenerateTestDefaultInventory(), - }) - err := capi.GenerateAdditionalManifests(ctx, &c) - Expect(err).To(Not(HaveOccurred())) - }) - }) - Context("Telemeter", func() { var ( diff --git a/internal/network/manifests_generator.go b/internal/network/manifests_generator.go index d3065b06b03a..ef66814320f0 100644 --- a/internal/network/manifests_generator.go +++ b/internal/network/manifests_generator.go @@ -23,7 +23,6 @@ import ( type ManifestsGeneratorAPI interface { AddChronyManifest(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error AddDnsmasqForSingleNode(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error - AddDisableVmwareTunnelOffloading(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error AddTelemeterManifest(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error } @@ -283,71 +282,6 @@ func fillTemplate(manifestParams map[string]string, templateData string, log log return buf.Bytes(), nil } -const disableTunnelOffloadManifest = ` -apiVersion: machineconfiguration.openshift.io/v1 -kind: MachineConfig -metadata: - labels: - machineconfiguration.openshift.io/role: %s - name: 50-%ss-disable-tunnel-offload -spec: - config: - ignition: - config: {} - security: - tls: {} - timeouts: {} - version: 2.2.0 - networkd: {} - passwd: {} - storage: - files: - - contents: - source: data:text/plain;charset=utf-8;base64,%s - verification: {} - filesystem: root - mode: 493 - path: /etc/NetworkManager/dispatcher.d/05-disable-tunnel-offload - osImageURL: "" -` - -const disableTunnelOffloadScript = `#! /bin/bash - -if [ "$2" != "up" ] ; then - exit 0 -fi - -driver=$(ethtool -i "$1" | awk '/driver:/{print $2;}') - -if [ "$driver" != "vmxnet3" ] ; then - exit 0 -fi - -current=$(ethtool -k "$1" | grep udp_tnl | grep -v '\[fixed\]') - -if [ -z "$current" ] ; then - exit 0 -fi - -nmcli connection modify $CONNECTION_UUID ethtool.feature-tx-udp_tnl-csum-segmentation off ethtool.feature-tx-udp_tnl-segmentation off -nmcli connection up $CONNECTION_UUID -` - -func createDisableTunnelOffloadingContext(role string) string { - return fmt.Sprintf(disableTunnelOffloadManifest, role, role, base64.StdEncoding.EncodeToString([]byte(disableTunnelOffloadScript))) -} - -func (m *ManifestsGenerator) AddDisableVmwareTunnelOffloading(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error { - for _, role := range []string{"master", "worker"} { - fname := fmt.Sprintf("50-%ss-disable-tunnel-offload.yaml", role) - if err := m.createManifests(ctx, c, fname, []byte(createDisableTunnelOffloadingContext(role))); err != nil { - log.WithError(err).Errorf("Failed to create disable tunnel offloading manifest for role %s", role) - return err - } - } - return nil -} - const ( redirectTelemeterStageManifest = ` apiVersion: v1 diff --git a/internal/network/mock_manifests_generator.go b/internal/network/mock_manifests_generator.go index e88b9b1a5af4..9aca004ad3ef 100644 --- a/internal/network/mock_manifests_generator.go +++ b/internal/network/mock_manifests_generator.go @@ -63,20 +63,6 @@ func (mr *MockManifestsGeneratorAPIMockRecorder) AddDnsmasqForSingleNode(ctx, lo return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddDnsmasqForSingleNode", reflect.TypeOf((*MockManifestsGeneratorAPI)(nil).AddDnsmasqForSingleNode), ctx, log, c) } -// AddDisableVmwareTunnelOffloading mocks base method -func (m *MockManifestsGeneratorAPI) AddDisableVmwareTunnelOffloading(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "AddDisableVmwareTunnelOffloading", ctx, log, c) - ret0, _ := ret[0].(error) - return ret0 -} - -// AddDisableVmwareTunnelOffloading indicates an expected call of AddDisableVmwareTunnelOffloading -func (mr *MockManifestsGeneratorAPIMockRecorder) AddDisableVmwareTunnelOffloading(ctx, log, c interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddDisableVmwareTunnelOffloading", reflect.TypeOf((*MockManifestsGeneratorAPI)(nil).AddDisableVmwareTunnelOffloading), ctx, log, c) -} - // AddTelemeterManifest mocks base method func (m *MockManifestsGeneratorAPI) AddTelemeterManifest(ctx context.Context, log logrus.FieldLogger, c *common.Cluster) error { m.ctrl.T.Helper()