Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions internal/cluster/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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")
}
Expand Down
71 changes: 0 additions & 71 deletions internal/cluster/cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down
66 changes: 0 additions & 66 deletions internal/network/manifests_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down Expand Up @@ -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
Expand Down
14 changes: 0 additions & 14 deletions internal/network/mock_manifests_generator.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.