From 36d7ea91fd9f77fc67195a05964ffeb38286e2ff Mon Sep 17 00:00:00 2001 From: Jack Shaw Date: Fri, 4 Aug 2023 16:00:33 +0100 Subject: [PATCH 1/2] Ensure risk is dropped when resolving charms Deduce platform should ensure the platform it returns doesn't include a risk. This is because charmhub doesn't really recognise the risk construct --- .../client/application/deployrepository.go | 14 ++++++++--- .../application/deployrepository_test.go | 24 ++++++++++++++++++- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/apiserver/facades/client/application/deployrepository.go b/apiserver/facades/client/application/deployrepository.go index 24f066c304e..4ed55b8e97c 100644 --- a/apiserver/facades/client/application/deployrepository.go +++ b/apiserver/facades/client/application/deployrepository.go @@ -421,8 +421,14 @@ func (v *deployFromRepositoryValidator) deducePlatform(arg params.DeployFromRepo } } if argBase != nil { - platform.OS = argBase.Name - platform.Channel = argBase.Channel + base, err := corebase.ParseBase(argBase.Name, argBase.Channel) + if err != nil { + return corecharm.Platform{}, usedModelDefaultBase, err + } + platform.OS = base.OS + // platform channels don't model the concept of a risk + // so ensure that only the track is included + platform.Channel = base.Channel.Track } // Initial validation of platform from known data. @@ -455,7 +461,9 @@ func (v *deployFromRepositoryValidator) deducePlatform(arg params.DeployFromRepo return corecharm.Platform{}, usedModelDefaultBase, err } platform.OS = defaultBase.OS - platform.Channel = defaultBase.Channel.String() + // platform channels don't model the concept of a risk + // so ensure that only the track is included + platform.Channel = defaultBase.Channel.Track usedModelDefaultBase = true } } diff --git a/apiserver/facades/client/application/deployrepository_test.go b/apiserver/facades/client/application/deployrepository_test.go index 6c7df0d616f..5e492b11177 100644 --- a/apiserver/facades/client/application/deployrepository_test.go +++ b/apiserver/facades/client/application/deployrepository_test.go @@ -462,6 +462,28 @@ func (s *validatorSuite) TestDeducePlatformSimple(c *gc.C) { c.Assert(plat, gc.DeepEquals, corecharm.Platform{Architecture: "amd64"}) } +func (s *validatorSuite) TestDeducePlatformRiskInChannel(c *gc.C) { + defer s.setupMocks(c).Finish() + //model constraint default + s.state.EXPECT().ModelConstraints().Return(constraints.Value{Arch: strptr("amd64")}, nil) + + arg := params.DeployFromRepositoryArg{ + CharmName: "testme", + Base: ¶ms.Base{ + Name: "ubuntu", + Channel: "22.10/stable", + }, + } + plat, usedModelDefaultBase, err := s.getValidator().deducePlatform(arg) + c.Assert(err, gc.IsNil) + c.Assert(usedModelDefaultBase, jc.IsFalse) + c.Assert(plat, gc.DeepEquals, corecharm.Platform{ + Architecture: "amd64", + OS: "ubuntu", + Channel: "22.10", + }) +} + func (s *validatorSuite) TestDeducePlatformArgArchBase(c *gc.C) { defer s.setupMocks(c).Finish() @@ -504,7 +526,7 @@ func (s *validatorSuite) TestDeducePlatformModelDefaultBase(c *gc.C) { c.Assert(plat, gc.DeepEquals, corecharm.Platform{ Architecture: "amd64", OS: "ubuntu", - Channel: "22.04/stable", + Channel: "22.04", }) } From 4158c7c9419a8815b1198bd184a6d25f1d53e71b Mon Sep 17 00:00:00 2001 From: Jack Shaw Date: Wed, 9 Aug 2023 11:58:56 +0100 Subject: [PATCH 2/2] Remove unsupported series from core Most notably, drop OpenSUSE and MacOSX, which despite being listed as supported series, are not supported and never have been Also drop EoL CentOS 8. Keep Centos7 which is EoL in June 2024 and CentOS9 which is recieving rolling updates --- cloudconfig/cloudinit/cloudinit_opensuse.go | 34 ------- cloudconfig/cloudinit/interface.go | 11 --- cloudconfig/machinecloudconfig.go | 2 +- cloudconfig/machinecloudconfig_test.go | 6 -- cloudconfig/userdatacfg.go | 4 - cloudconfig/userdatacfg_test.go | 23 ----- cloudconfig/userdatacfg_unix.go | 19 +--- cmd/juju/application/deploy_test.go | 8 +- .../deployer/bundlehandler_test.go | 2 +- .../application/deployer/deployer_test.go | 2 +- cmd/juju/application/export_test.go | 2 +- cmd/juju/application/refresh_test.go | 4 +- cmd/juju/application/unexpose_test.go | 2 +- cmd/juju/machine/upgrademachine_test.go | 2 +- container/lxd/image.go | 4 - core/base/supported.go | 99 +------------------ core/base/supportedbases_test.go | 4 - core/base/supportedseries.go | 12 --- core/base/supportedseries_linux_test.go | 4 +- core/base/supportedseries_test.go | 14 +-- core/os/os.go | 7 +- core/os/os_linux.go | 2 - core/os/os_test.go | 17 +--- core/paths/logfile.go | 2 - .../manual/sshprovisioner/sshprovisioner.go | 5 - packaging/dependency/kvm.go | 3 +- packaging/dependency/lxd.go | 5 +- packaging/dependency/mongo.go | 2 +- packaging/manager.go | 11 +-- packaging/manager_test.go | 22 +---- provider/common/disk.go | 11 +-- provider/lxd/userdata.go | 2 +- tests/suites/deploy/os.sh | 22 ++--- version/current_test.go | 25 +---- worker/uniter/runner/context/env.go | 23 ----- worker/uniter/runner/context/env_test.go | 61 ------------ 36 files changed, 60 insertions(+), 418 deletions(-) delete mode 100644 cloudconfig/cloudinit/cloudinit_opensuse.go diff --git a/cloudconfig/cloudinit/cloudinit_opensuse.go b/cloudconfig/cloudinit/cloudinit_opensuse.go deleted file mode 100644 index 47c46ec2a1c..00000000000 --- a/cloudconfig/cloudinit/cloudinit_opensuse.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2015 Canonical Ltd. -// Copyright 2015 Cloudbase Solutions SRL -// Licensed under the AGPLv3, see LICENCE file for details. - -package cloudinit - -import ( - "github.com/juju/packaging/v2/commands" - "github.com/juju/proxy" -) - -// Implementation of PackageHelper for OpenSUSE -type openSUSEHelper struct { - paccmder commands.PackageCommander -} - -// Returns the list of required packages in OpenSUSE -func (helper openSUSEHelper) getRequiredPackages() []string { - return []string{ - "curl", - "bridge-utils", - //"cloud-utils", Put as a requirement to the cloud image (requires subscription) - "ncat", - "tmux", - } -} - -// addPackageProxyCmd is a helper method which returns the corresponding runcmd -// to apply the package proxy settings for OpenSUSE -func (helper openSUSEHelper) addPackageProxyCmd(url string) string { - return helper.paccmder.SetProxyCmds(proxy.Settings{ - Http: url, - })[0] -} diff --git a/cloudconfig/cloudinit/interface.go b/cloudconfig/cloudinit/interface.go index 5949ee4f6bb..32f5aae6f6a 100644 --- a/cloudconfig/cloudinit/interface.go +++ b/cloudconfig/cloudinit/interface.go @@ -447,17 +447,6 @@ func New(osname string, opts ...func(*cloudConfig)) (CloudConfig, error) { cloudConfig: cfg, helper: centOSHelper{}, }, nil - case os.OpenSUSE: - cfg.paccmder = map[jujupackaging.PackageManagerName]commands.PackageCommander{ - jujupackaging.ZypperPackageManager: commands.NewZypperPackageCommander(), - } - cfg.pacconfer = map[jujupackaging.PackageManagerName]config.PackagingConfigurer{ - jujupackaging.ZypperPackageManager: config.NewZypperPackagingConfigurer(osname), - } - return ¢OSCloudConfig{ - cloudConfig: cfg, - helper: openSUSEHelper{paccmder: commands.NewZypperPackageCommander()}, - }, nil default: return nil, errors.NotFoundf("cloudconfig for os %q", osname) } diff --git a/cloudconfig/machinecloudconfig.go b/cloudconfig/machinecloudconfig.go index 0bf0d775784..6cf60ed8f7a 100644 --- a/cloudconfig/machinecloudconfig.go +++ b/cloudconfig/machinecloudconfig.go @@ -81,7 +81,7 @@ func NewMachineInitReaderFromConfig(cfg MachineInitReaderConfig) InitReader { // machine. It is sourced from both Cloud-Init and Curtin data. func (r *MachineInitReader) GetInitConfig() (map[string]interface{}, error) { switch utilsos.OSTypeForName(r.config.Base.OS) { - case utilsos.Ubuntu, utilsos.CentOS, utilsos.OpenSUSE: + case utilsos.Ubuntu, utilsos.CentOS: hostSeries, err := osseries.HostSeries() series, err2 := corebase.GetSeriesFromBase(r.config.Base) if err != nil || err2 != nil || series != hostSeries { diff --git a/cloudconfig/machinecloudconfig_test.go b/cloudconfig/machinecloudconfig_test.go index a9841fccdda..de815f0f706 100644 --- a/cloudconfig/machinecloudconfig_test.go +++ b/cloudconfig/machinecloudconfig_test.go @@ -83,12 +83,6 @@ var cloudinitDataVerifyTests = []cloudinitDataVerifyTest{ containerBase: corebase.MakeDefaultBase("centos", "7"), result: expectedResult, }, - { - description: "centos8 on centos8", - machineBase: corebase.MakeDefaultBase("centos", "8"), - containerBase: corebase.MakeDefaultBase("centos", "8"), - result: expectedResult, - }, } func (s *fromHostSuite) TestGetMachineCloudInitDataVerifySeries(c *gc.C) { diff --git a/cloudconfig/userdatacfg.go b/cloudconfig/userdatacfg.go index 031023b9355..ad76f9c4f07 100644 --- a/cloudconfig/userdatacfg.go +++ b/cloudconfig/userdatacfg.go @@ -72,8 +72,6 @@ func NewUserdataConfig(icfg *instancecfg.InstanceConfig, conf cloudinit.CloudCon return &unixConfigure{base}, nil case os.CentOS: return &unixConfigure{base}, nil - case os.OpenSUSE: - return &unixConfigure{base}, nil default: return nil, errors.NotSupportedf("OS %s", icfg.Base.OS) } @@ -143,8 +141,6 @@ func SetUbuntuUser(conf cloudinit.CloudConfig, authorizedKeys string) { groups = UbuntuGroups case os.CentOS: groups = CentOSGroups - case os.OpenSUSE: - groups = OpenSUSEGroups } conf.AddUser(&cloudinit.User{ Name: "ubuntu", diff --git a/cloudconfig/userdatacfg_test.go b/cloudconfig/userdatacfg_test.go index 8f7f5e38aa4..67b45242df3 100644 --- a/cloudconfig/userdatacfg_test.go +++ b/cloudconfig/userdatacfg_test.go @@ -429,18 +429,6 @@ systemctl is-active firewalld &> /dev/null && systemctl stop firewalld || true sed -i "s/\^\.\*requiretty/#Defaults requiretty/" /etc/sudoers `, }, - // OpenSUSE non controller - { - cfg: makeNormalConfig(corebase.MakeDefaultBase("opensuse", "opensuse42"), 0), - inexactMatch: true, - upgradedToVersion: "1.2.3", - expectScripts: ` -systemctl is-enabled firewalld &> /dev/null && systemctl mask firewalld || true -systemctl is-active firewalld &> /dev/null && systemctl stop firewalld || true -sed -i "s/\^\.\*requiretty/#Defaults requiretty/" /etc/sudoers -`, - }, - // check that it works ok with compound machine ids. { cfg: makeNormalConfig(jammy, 0).mutate(func(cfg *testInstanceConfig) { @@ -1418,14 +1406,3 @@ func (*cloudinitSuite) TestCloudInitBootstrapInitialSSHKeys(c *gc.C) { `ssh-keygen -t ed25519 -N "" -f /etc/ssh/ssh_host_ed25519_key || true`, }) } - -func (*cloudinitSuite) TestSetUbuntuUserOpenSUSE(c *gc.C) { - ci, err := cloudinit.New("opensuse") - c.Assert(err, jc.ErrorIsNil) - cloudconfig.SetUbuntuUser(ci, "akey\n#also\nbkey") - data, err := ci.RenderYAML() - c.Assert(err, jc.ErrorIsNil) - keys := []string{"akey", "bkey"} - expected := expectedUbuntuUser(cloudconfig.OpenSUSEGroups, keys) - c.Assert(string(data), jc.YAMLEquals, expected) -} diff --git a/cloudconfig/userdatacfg_unix.go b/cloudconfig/userdatacfg_unix.go index 78a67367756..a7517701842 100644 --- a/cloudconfig/userdatacfg_unix.go +++ b/cloudconfig/userdatacfg_unix.go @@ -125,10 +125,6 @@ var ( // CentOSGroups is the set of unix groups to add the "ubuntu" user to // when initializing a CentOS system. CentOSGroups = []string{"adm", "systemd-journal", "wheel"} - - // OpenSUSEGroups is the set of unix groups to add the "ubuntu" user to - // when initializing a OpenSUSE system. - OpenSUSEGroups = []string{"users"} ) type unixConfigure struct { @@ -187,19 +183,6 @@ func (w *unixConfigure) ConfigureBasic() error { `sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers`, ) - case os.OpenSUSE: - w.conf.AddScripts( - // Mask and stop firewalld, if enabled, so it cannot start. See - // http://pad.lv/1492066. firewalld might be missing, in which case - // is-enabled and is-active prints an error, which is why the output - // is suppressed. - "systemctl is-enabled firewalld &> /dev/null && systemctl mask firewalld || true", - "systemctl is-active firewalld &> /dev/null && systemctl stop firewalld || true", - `sed -i "s/^.*requiretty/#Defaults requiretty/" /etc/sudoers`, - //Scripts assume ubuntu group for ubuntu user... - `(grep ubuntu /etc/group) || groupadd ubuntu`, - `usermod -g ubuntu -G ubuntu,users ubuntu`, - ) } SetUbuntuUser(w.conf, w.icfg.AuthorizedKeys) @@ -237,7 +220,7 @@ func (w *unixConfigure) ConfigureBasic() error { func (w *unixConfigure) setDataDirPermissions() string { var user string switch w.os { - case os.CentOS, os.OpenSUSE: + case os.CentOS: user = "root" default: user = "syslog" diff --git a/cmd/juju/application/deploy_test.go b/cmd/juju/application/deploy_test.go index fc205221990..048f3fb1deb 100644 --- a/cmd/juju/application/deploy_test.go +++ b/cmd/juju/application/deploy_test.go @@ -154,7 +154,7 @@ func (s *DeploySuiteBase) SetUpTest(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "jammy", "xenial", ), nil }, @@ -1044,7 +1044,7 @@ func (s *CAASDeploySuiteBase) SetUpTest(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "jammy", "xenial", ), nil }, @@ -1485,7 +1485,7 @@ func (s *DeploySuite) setupNonESMBase(c *gc.C) (corebase.Base, string) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "jammy", "xenial", ), nil }, @@ -1944,7 +1944,7 @@ func (s *DeployUnitTestSuite) SetUpTest(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "jammy", "xenial", ), nil }, diff --git a/cmd/juju/application/deployer/bundlehandler_test.go b/cmd/juju/application/deployer/bundlehandler_test.go index 7c7213e13b0..b3b6a9d38f9 100644 --- a/cmd/juju/application/deployer/bundlehandler_test.go +++ b/cmd/juju/application/deployer/bundlehandler_test.go @@ -66,7 +66,7 @@ func (s *BundleDeployRepositorySuite) SetUpTest(_ *gc.C) { s.PatchValue(&SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, diff --git a/cmd/juju/application/deployer/deployer_test.go b/cmd/juju/application/deployer/deployer_test.go index 0b444de38b5..0bfba50eaf1 100644 --- a/cmd/juju/application/deployer/deployer_test.go +++ b/cmd/juju/application/deployer/deployer_test.go @@ -60,7 +60,7 @@ func (s *deployerSuite) SetUpTest(_ *gc.C) { s.PatchValue(&SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, diff --git a/cmd/juju/application/export_test.go b/cmd/juju/application/export_test.go index a0d17e2e133..82ed6a1d502 100644 --- a/cmd/juju/application/export_test.go +++ b/cmd/juju/application/export_test.go @@ -249,7 +249,7 @@ func (s *RepoSuiteBaseSuite) SetUpTest(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, diff --git a/cmd/juju/application/refresh_test.go b/cmd/juju/application/refresh_test.go index d4938829ded..1cbd7d7d7d4 100644 --- a/cmd/juju/application/refresh_test.go +++ b/cmd/juju/application/refresh_test.go @@ -435,7 +435,7 @@ func (s *RefreshErrorsStateSuite) SetUpSuite(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, @@ -565,7 +565,7 @@ func (s *RefreshSuccessStateSuite) SetUpTest(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, diff --git a/cmd/juju/application/unexpose_test.go b/cmd/juju/application/unexpose_test.go index 9f3b28285be..fb7de09e90e 100644 --- a/cmd/juju/application/unexpose_test.go +++ b/cmd/juju/application/unexpose_test.go @@ -36,7 +36,7 @@ func (s *UnexposeSuite) SetUpTest(c *gc.C) { s.PatchValue(&deployer.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, diff --git a/cmd/juju/machine/upgrademachine_test.go b/cmd/juju/machine/upgrademachine_test.go index 49581333ec7..0bbe4c1e136 100644 --- a/cmd/juju/machine/upgrademachine_test.go +++ b/cmd/juju/machine/upgrademachine_test.go @@ -72,7 +72,7 @@ func (s *UpgradeMachineSuite) SetUpTest(c *gc.C) { s.PatchValue(&machine.SupportedJujuSeries, func(time.Time, string, string) (set.Strings, error) { return set.NewStrings( - "centos7", "centos8", "centos9", "genericlinux", "kubernetes", "opensuseleap", + "centos7", "centos9", "genericlinux", "kubernetes", "jammy", "focal", "bionic", "xenial", ), nil }, diff --git a/container/lxd/image.go b/container/lxd/image.go index d2b15236003..55829250eb3 100644 --- a/container/lxd/image.go +++ b/container/lxd/image.go @@ -221,10 +221,6 @@ func constructBaseRemoteAlias(base jujubase.Base, arch string) (string, error) { return "centos/9-Stream/cloud/amd64", nil } } - case jujuos.OpenSUSE: - if base.Channel.Track == "opensuse42" && arch == jujuarch.AMD64 { - return "opensuse/42.2/amd64", nil - } } return "", errors.NotSupportedf("base %q", base.DisplayString()) } diff --git a/core/base/supported.go b/core/base/supported.go index 35150ee771b..332b93c2a1a 100644 --- a/core/base/supported.go +++ b/core/base/supported.go @@ -380,11 +380,9 @@ var ubuntuSeries = map[SeriesName]seriesVersion{ } const ( - Centos7 SeriesName = "centos7" - Centos8 SeriesName = "centos8" - Centos9 SeriesName = "centos9" - OpenSUSELeap SeriesName = "opensuseleap" - Kubernetes SeriesName = "kubernetes" + Centos7 SeriesName = "centos7" + Centos9 SeriesName = "centos9" + Kubernetes SeriesName = "kubernetes" ) var centosSeries = map[SeriesName]seriesVersion{ @@ -393,11 +391,6 @@ var centosSeries = map[SeriesName]seriesVersion{ Version: "7", Supported: true, }, - Centos8: { - WorkloadType: OtherWorkloadType, - Version: "8", - Supported: true, - }, Centos9: { WorkloadType: OtherWorkloadType, Version: "9", @@ -405,14 +398,6 @@ var centosSeries = map[SeriesName]seriesVersion{ }, } -var opensuseSeries = map[SeriesName]seriesVersion{ - OpenSUSELeap: { - WorkloadType: OtherWorkloadType, - Version: "opensuse42", - Supported: true, - }, -} - var kubernetesSeries = map[SeriesName]seriesVersion{ Kubernetes: { WorkloadType: OtherWorkloadType, @@ -420,81 +405,3 @@ var kubernetesSeries = map[SeriesName]seriesVersion{ Supported: true, }, } - -var macOSXSeries = map[SeriesName]seriesVersion{ - "catalina": { - WorkloadType: UnsupportedWorkloadType, - Version: "19", - Supported: true, - }, - "mojave": { - WorkloadType: UnsupportedWorkloadType, - Version: "18", - Supported: true, - }, - "highsierra": { - WorkloadType: UnsupportedWorkloadType, - Version: "17", - Supported: true, - }, - "sierra": { - WorkloadType: UnsupportedWorkloadType, - Version: "16", - Supported: true, - }, - "elcapitan": { - WorkloadType: UnsupportedWorkloadType, - Version: "15", - Supported: true, - }, - "yosemite": { - WorkloadType: UnsupportedWorkloadType, - Version: "14", - Supported: true, - }, - "mavericks": { - WorkloadType: UnsupportedWorkloadType, - Version: "13", - Supported: true, - }, - "mountainlion": { - WorkloadType: UnsupportedWorkloadType, - Version: "12", - Supported: true, - }, - "lion": { - WorkloadType: UnsupportedWorkloadType, - Version: "11", - Supported: true, - }, - "snowleopard": { - WorkloadType: UnsupportedWorkloadType, - Version: "10", - Supported: true, - }, - "leopard": { - WorkloadType: UnsupportedWorkloadType, - Version: "9", - Supported: true, - }, - "tiger": { - WorkloadType: UnsupportedWorkloadType, - Version: "8", - Supported: true, - }, - "panther": { - WorkloadType: UnsupportedWorkloadType, - Version: "7", - Supported: true, - }, - "jaguar": { - WorkloadType: UnsupportedWorkloadType, - Version: "6", - Supported: true, - }, - "puma": { - WorkloadType: UnsupportedWorkloadType, - Version: "5", - Supported: true, - }, -} diff --git a/core/base/supportedbases_test.go b/core/base/supportedbases_test.go index 74955187642..400bb21dbb6 100644 --- a/core/base/supportedbases_test.go +++ b/core/base/supportedbases_test.go @@ -30,11 +30,9 @@ func (s *BasesSuite) TestWorkloadBases(c *gc.C) { imageStream: Daily, expectedBase: []Base{ MustParseBaseFromString("centos@7/stable"), - MustParseBaseFromString("centos@8/stable"), MustParseBaseFromString("centos@9/stable"), MustParseBaseFromString("genericlinux@genericlinux/stable"), MustParseBaseFromString("kubernetes@kubernetes"), - MustParseBaseFromString("opensuse@opensuse42/stable"), MustParseBaseFromString("ubuntu@20.04/stable"), MustParseBaseFromString("ubuntu@22.04/stable"), }, @@ -44,11 +42,9 @@ func (s *BasesSuite) TestWorkloadBases(c *gc.C) { imageStream: Daily, expectedBase: []Base{ MustParseBaseFromString("centos@7/stable"), - MustParseBaseFromString("centos@8/stable"), MustParseBaseFromString("centos@9/stable"), MustParseBaseFromString("genericlinux@genericlinux/stable"), MustParseBaseFromString("kubernetes@kubernetes"), - MustParseBaseFromString("opensuse@opensuse42/stable"), MustParseBaseFromString("ubuntu@20.04/stable"), MustParseBaseFromString("ubuntu@22.04/stable"), }, diff --git a/core/base/supportedseries.go b/core/base/supportedseries.go index fa5d52cd133..4a4e2ae5814 100644 --- a/core/base/supportedseries.go +++ b/core/base/supportedseries.go @@ -175,15 +175,9 @@ func composeSeriesVersions() { for k, v := range ubuntuSeries { allSeriesVersions[k] = v } - for k, v := range macOSXSeries { - allSeriesVersions[k] = v - } for k, v := range centosSeries { allSeriesVersions[k] = v } - for k, v := range opensuseSeries { - allSeriesVersions[k] = v - } for k, v := range kubernetesSeries { allSeriesVersions[k] = v } @@ -261,15 +255,9 @@ func getOSFromSeries(series SeriesName) (coreos.OSType, error) { if _, ok := ubuntuSeries[series]; ok { return coreos.Ubuntu, nil } - if _, ok := macOSXSeries[series]; ok { - return coreos.OSX, nil - } if _, ok := centosSeries[series]; ok { return coreos.CentOS, nil } - if _, ok := opensuseSeries[series]; ok { - return coreos.OpenSUSE, nil - } if _, ok := kubernetesSeries[series]; ok { return coreos.Kubernetes, nil } diff --git a/core/base/supportedseries_linux_test.go b/core/base/supportedseries_linux_test.go index 26ce94484c5..cba30c450ab 100644 --- a/core/base/supportedseries_linux_test.go +++ b/core/base/supportedseries_linux_test.go @@ -80,6 +80,6 @@ func (s *SupportedSeriesLinuxSuite) TestWorkloadSeries(c *gc.C) { series, err := WorkloadSeries(time.Time{}, "", "") c.Assert(err, jc.ErrorIsNil) c.Assert(series.SortedValues(), gc.DeepEquals, []string{ - "centos7", "centos8", "centos9", "focal", "genericlinux", "jammy", "kubernetes", - "opensuseleap"}) + "centos7", "centos9", "focal", "genericlinux", "jammy", "kubernetes", + }) } diff --git a/core/base/supportedseries_test.go b/core/base/supportedseries_test.go index 8f4993d9645..f9f5ba7b2d1 100644 --- a/core/base/supportedseries_test.go +++ b/core/base/supportedseries_test.go @@ -39,7 +39,7 @@ func (s *SupportedSeriesSuite) TestSeriesForTypes(c *gc.C) { c.Assert(ctrlSeries, jc.DeepEquals, []string{"jammy", "focal"}) wrkSeries := info.workloadSeries(false) - c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos8", "centos7", "genericlinux", "kubernetes", "opensuseleap"}) + c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos7", "genericlinux", "kubernetes"}) } func (s *SupportedSeriesSuite) TestSeriesForTypesUsingImageStream(c *gc.C) { @@ -55,7 +55,7 @@ func (s *SupportedSeriesSuite) TestSeriesForTypesUsingImageStream(c *gc.C) { c.Assert(ctrlSeries, jc.DeepEquals, []string{"jammy", "focal"}) wrkSeries := info.workloadSeries(false) - c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos8", "centos7", "genericlinux", "kubernetes", "opensuseleap"}) + c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos7", "genericlinux", "kubernetes"}) } func (s *SupportedSeriesSuite) TestSeriesForTypesUsingInvalidImageStream(c *gc.C) { @@ -71,7 +71,7 @@ func (s *SupportedSeriesSuite) TestSeriesForTypesUsingInvalidImageStream(c *gc.C c.Assert(ctrlSeries, jc.DeepEquals, []string{"jammy", "focal"}) wrkSeries := info.workloadSeries(false) - c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos8", "centos7", "genericlinux", "kubernetes", "opensuseleap"}) + c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos7", "genericlinux", "kubernetes"}) } func (s *SupportedSeriesSuite) TestSeriesForTypesUsingInvalidSeries(c *gc.C) { @@ -87,7 +87,7 @@ func (s *SupportedSeriesSuite) TestSeriesForTypesUsingInvalidSeries(c *gc.C) { c.Assert(ctrlSeries, jc.DeepEquals, []string{"jammy", "focal"}) wrkSeries := info.workloadSeries(false) - c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos8", "centos7", "genericlinux", "kubernetes", "opensuseleap"}) + c.Assert(wrkSeries, jc.DeepEquals, []string{"jammy", "focal", "centos9", "centos7", "genericlinux", "kubernetes"}) } var getOSFromSeriesTests = []struct { @@ -97,15 +97,9 @@ var getOSFromSeriesTests = []struct { }{{ series: "precise", want: coreos.Ubuntu, -}, { - series: "mountainlion", - want: coreos.OSX, }, { series: "centos7", want: coreos.CentOS, -}, { - series: "opensuseleap", - want: coreos.OpenSUSE, }, { series: "kubernetes", want: coreos.Kubernetes, diff --git a/core/os/os.go b/core/os/os.go index 757d149757b..e458cb7f050 100644 --- a/core/os/os.go +++ b/core/os/os.go @@ -18,7 +18,6 @@ const ( OSX CentOS GenericLinux - OpenSUSE Kubernetes ) @@ -34,8 +33,6 @@ func (t OSType) String() string { return "CentOS" case GenericLinux: return "GenericLinux" - case OpenSUSE: - return "OpenSUSE" case Kubernetes: return "Kubernetes" } @@ -49,10 +46,8 @@ func init() { Unknown, Ubuntu, Windows, - OSX, CentOS, GenericLinux, - OpenSUSE, Kubernetes, } validOSTypeNames = make(map[string]OSType) @@ -103,7 +98,7 @@ func (t OSType) EquivalentTo(t2 OSType) bool { // IsLinux returns true if the OS type is a Linux variant. func (t OSType) IsLinux() bool { switch t { - case Ubuntu, CentOS, GenericLinux, OpenSUSE: + case Ubuntu, CentOS, GenericLinux: return true } return false diff --git a/core/os/os_linux.go b/core/os/os_linux.go index 765c8ad64bb..b50349928a0 100644 --- a/core/os/os_linux.go +++ b/core/os/os_linux.go @@ -39,8 +39,6 @@ func updateOS(f string) (OSType, error) { return Ubuntu, nil case strings.ToLower(CentOS.String()): return CentOS, nil - case strings.ToLower(OpenSUSE.String()): - return OpenSUSE, nil default: return GenericLinux, nil } diff --git a/core/os/os_test.go b/core/os/os_test.go index 91c90093b91..815bf35bacb 100644 --- a/core/os/os_test.go +++ b/core/os/os_test.go @@ -20,15 +20,13 @@ func (s *osSuite) TestHostOS(c *gc.C) { switch runtime.GOOS { case "windows": c.Assert(os, gc.Equals, Windows) - case "darwin": + case "OSX": c.Assert(os, gc.Equals, OSX) case "linux": // TODO(mjs) - this should really do more by patching out // osReleaseFile and testing the corner cases. switch os { case Ubuntu, CentOS, GenericLinux: - case OpenSUSE: - c.Assert(os, gc.Equals, OpenSUSE) default: c.Fatalf("unknown linux version: %v", os) } @@ -40,24 +38,19 @@ func (s *osSuite) TestHostOS(c *gc.C) { func (s *osSuite) TestEquivalentTo(c *gc.C) { c.Check(Ubuntu.EquivalentTo(CentOS), jc.IsTrue) c.Check(Ubuntu.EquivalentTo(GenericLinux), jc.IsTrue) - c.Check(Ubuntu.EquivalentTo(OpenSUSE), jc.IsTrue) c.Check(GenericLinux.EquivalentTo(Ubuntu), jc.IsTrue) - c.Check(GenericLinux.EquivalentTo(OpenSUSE), jc.IsTrue) c.Check(CentOS.EquivalentTo(CentOS), jc.IsTrue) - c.Check(CentOS.EquivalentTo(OpenSUSE), jc.IsTrue) - - c.Check(OSX.EquivalentTo(Ubuntu), jc.IsFalse) - c.Check(OSX.EquivalentTo(Windows), jc.IsFalse) - c.Check(GenericLinux.EquivalentTo(OSX), jc.IsFalse) } func (s *osSuite) TestIsLinux(c *gc.C) { c.Check(Ubuntu.IsLinux(), jc.IsTrue) c.Check(CentOS.IsLinux(), jc.IsTrue) c.Check(GenericLinux.IsLinux(), jc.IsTrue) - c.Check(OpenSUSE.IsLinux(), jc.IsTrue) - c.Check(OSX.IsLinux(), jc.IsFalse) c.Check(Windows.IsLinux(), jc.IsFalse) c.Check(Unknown.IsLinux(), jc.IsFalse) + + c.Check(OSX.EquivalentTo(Ubuntu), jc.IsFalse) + c.Check(OSX.EquivalentTo(Windows), jc.IsFalse) + c.Check(GenericLinux.EquivalentTo(OSX), jc.IsFalse) } diff --git a/core/paths/logfile.go b/core/paths/logfile.go index 959184606ce..83834f1b5b9 100644 --- a/core/paths/logfile.go +++ b/core/paths/logfile.go @@ -65,8 +65,6 @@ func SyslogUserGroup() (string, string) { switch jujuos.HostOS() { case jujuos.CentOS: return "root", "adm" - case jujuos.OpenSUSE: - return "root", "root" default: return "syslog", "adm" } diff --git a/environs/manual/sshprovisioner/sshprovisioner.go b/environs/manual/sshprovisioner/sshprovisioner.go index e7bfc85af45..adfa4ded7f4 100644 --- a/environs/manual/sshprovisioner/sshprovisioner.go +++ b/environs/manual/sshprovisioner/sshprovisioner.go @@ -202,11 +202,6 @@ os_id=$(grep '^ID=' /etc/os-release | tr -d '"' | cut -d= -f2) if [ "$os_id" = 'centos' ]; then os_version=$(grep '^VERSION_ID=' /etc/os-release | tr -d '"' | cut -d= -f2) echo "centos$os_version" -elif [ "$os_id" = 'opensuse' ]; then - os_version=$(grep '^VERSION_ID=' /etc/os-release | tr -d '"' | cut -d= -f2 | cut -d. -f1) - if [ $os_version -eq 42 ]; then - echo "opensuseleap" - fi else lsb_release -cs fi diff --git a/packaging/dependency/kvm.go b/packaging/dependency/kvm.go index 9a3442f057e..f224fff7a48 100644 --- a/packaging/dependency/kvm.go +++ b/packaging/dependency/kvm.go @@ -7,6 +7,7 @@ import ( "github.com/juju/errors" "github.com/juju/utils/v3/arch" + "github.com/juju/juju/core/base" "github.com/juju/juju/packaging" ) @@ -21,7 +22,7 @@ type kvmDependency struct { // PackageList implements packaging.Dependency. func (dep kvmDependency) PackageList(series string) ([]packaging.Package, error) { - if series == "centos7" || series == "centos8" || series == "centos9" || series == "opensuseleap" { + if series == base.Centos7.String() || series == base.Centos9.String() { return nil, errors.NotSupportedf("installing kvm on series %q", series) } diff --git a/packaging/dependency/lxd.go b/packaging/dependency/lxd.go index 9569a623a58..698de312404 100644 --- a/packaging/dependency/lxd.go +++ b/packaging/dependency/lxd.go @@ -8,6 +8,7 @@ import ( "github.com/juju/errors" + "github.com/juju/juju/core/base" "github.com/juju/juju/packaging" ) @@ -30,9 +31,9 @@ func (dep lxdDependency) PackageList(series string) ([]packaging.Package, error) var pkg packaging.Package switch series { - case "centos7", "centos8", "centos9", "opensuseleap": + case base.Centos7.String(), base.Centos9.String(): return nil, errors.NotSupportedf("LXD containers on series %q", series) - case "bionic", blankSeries: + case base.Bionic.String(), blankSeries: pkg.Name = "lxd" pkg.PackageManager = packaging.AptPackageManager default: // Use snaps for cosmic and beyond diff --git a/packaging/dependency/mongo.go b/packaging/dependency/mongo.go index 14c91c8cdd6..8f2eeeaf8e2 100644 --- a/packaging/dependency/mongo.go +++ b/packaging/dependency/mongo.go @@ -31,7 +31,7 @@ func (dep mongoDependency) PackageList(series string) ([]packaging.Package, erro ) switch series { - case "centos7", "centos8", "centos9", "opensuseleap": + case "centos7": return nil, errors.NotSupportedf("installing mongo on series %q", series) default: if dep.snapChannel == "" { diff --git a/packaging/manager.go b/packaging/manager.go index 3b045f1ec62..892df9e4056 100644 --- a/packaging/manager.go +++ b/packaging/manager.go @@ -20,10 +20,9 @@ type PackageManagerName string // The list of supported package managers. const ( - AptPackageManager PackageManagerName = "apt" - YumPackageManager PackageManagerName = "yum" - ZypperPackageManager PackageManagerName = "zypper" - SnapPackageManager PackageManagerName = "snap" + AptPackageManager PackageManagerName = "apt" + YumPackageManager PackageManagerName = "yum" + SnapPackageManager PackageManagerName = "snap" ) // Dependency is implemented by objects that can provide a series-specific @@ -117,8 +116,6 @@ func newPackageManager(name PackageManagerName) (manager.PackageManager, error) return manager.NewAptPackageManager(), nil case YumPackageManager: return manager.NewYumPackageManager(), nil - case ZypperPackageManager: - return manager.NewZypperPackageManager(), nil case SnapPackageManager: return manager.NewSnapPackageManager(), nil default: @@ -132,8 +129,6 @@ func newPackageConfigurer(name PackageManagerName, series string) (config.Packag return config.NewAptPackagingConfigurer(series), nil case YumPackageManager: return config.NewYumPackagingConfigurer(series), nil - case ZypperPackageManager: - return config.NewZypperPackagingConfigurer(series), nil case SnapPackageManager: return nil, nil default: diff --git a/packaging/manager_test.go b/packaging/manager_test.go index b89583eca46..a33b88466f1 100644 --- a/packaging/manager_test.go +++ b/packaging/manager_test.go @@ -22,27 +22,13 @@ func (s *DependencyManagerTestSuite) SetUpTest(c *gc.C) { } func (s *DependencyManagerTestSuite) TestInstallWithCentos(c *gc.C) { - for _, series := range []string{"centos7", "centos8"} { - s.assertInstallCallsCorrectBinary(c, assertParams{ - series: series, - pkg: "foo", - pm: packaging.YumPackageManager, - expPkgBinary: "yum", - expArgs: []string{ - "--assumeyes", "--debuglevel=1", "install", "foo", - }, - }) - } -} - -func (s *DependencyManagerTestSuite) TestInstallWithOpenSuse(c *gc.C) { s.assertInstallCallsCorrectBinary(c, assertParams{ - series: "opensuseleap", + series: "centos7", pkg: "foo", - pm: packaging.ZypperPackageManager, - expPkgBinary: "zypper", + pm: packaging.YumPackageManager, + expPkgBinary: "yum", expArgs: []string{ - "--quiet", "--non-interactive", "install", "foo", + "--assumeyes", "--debuglevel=1", "install", "foo", }, }) } diff --git a/provider/common/disk.go b/provider/common/disk.go index 286e5e66f6a..8cab4faa349 100644 --- a/provider/common/disk.go +++ b/provider/common/disk.go @@ -11,15 +11,8 @@ import ( // instance, in Gigabytes. This value accommodates the anticipated // size of the initial image, any updates, and future application // data. -func MinRootDiskSizeGiB(os jujuos.OSType) uint64 { - switch os { - case jujuos.Ubuntu, jujuos.CentOS, jujuos.OpenSUSE: - return 8 - // By default we just return a "sane" default, since the error will just - // be returned by the api and seen in juju status - default: - return 8 - } +func MinRootDiskSizeGiB(_ jujuos.OSType) uint64 { + return 8 } // MiBToGiB converts the provided megabytes (base-2) into the nearest diff --git a/provider/lxd/userdata.go b/provider/lxd/userdata.go index 7df75a05407..d11cc4c8e87 100644 --- a/provider/lxd/userdata.go +++ b/provider/lxd/userdata.go @@ -16,7 +16,7 @@ type lxdRenderer struct{} // EncodeUserdata implements renderers.ProviderRenderer. func (lxdRenderer) Render(cfg cloudinit.CloudConfig, os jujuos.OSType) ([]byte, error) { switch os { - case jujuos.Ubuntu, jujuos.CentOS, jujuos.OpenSUSE: + case jujuos.Ubuntu, jujuos.CentOS: bytes, err := renderers.RenderYAML(cfg) return bytes, errors.Trace(err) default: diff --git a/tests/suites/deploy/os.sh b/tests/suites/deploy/os.sh index 86c1a0d5fe2..d7ce13f6b08 100644 --- a/tests/suites/deploy/os.sh +++ b/tests/suites/deploy/os.sh @@ -16,7 +16,7 @@ test_deploy_os() { # https://wiki.centos.org/Cloud/AWS # run "run_deploy_centos7" - run "run_deploy_centos8" + run "run_deploy_centos9" ;; *) echo "==> TEST SKIPPED: deploy_centos - tests for AWS only" @@ -42,17 +42,17 @@ run_deploy_centos7() { # juju add-model test-deploy-centos-west2 aws/us-west-2 - juju metadata add-image --series centos7 ami-0bc06212a56393ee1 + juju metadata add-image --base centos@7 ami-0bc06212a56393ee1 # # There is a specific list of instance types which can be used with # this image. Sometimes juju chooses the wrong one e.g. t3a.medium. # Ensure we use one that is allowed. # - juju deploy ./tests/suites/deploy/charms/centos-dummy-sink --series centos7 --constraints instance-type=t3.medium + juju deploy ./tests/suites/deploy/charms/centos-dummy-sink --base centos@7 --constraints instance-type=t3.medium - base=$(juju status --format=json | jq '.applications."dummy-sink".base') - echo "$base" | check "centos@7" + juju status --format=json | jq '.applications."dummy-sink".base.name' | check "centos" + juju status --format=json | jq '.applications."dummy-sink".base.channel' | check "7" wait_for "dummy-sink" "$(idle_condition "dummy-sink")" @@ -60,13 +60,13 @@ run_deploy_centos7() { destroy_model "test-deploy-centos-west2" } -run_deploy_centos8() { +run_deploy_centos9() { echo echo "==> Checking for dependencies" check_juju_dependencies metadata - name="test-deploy-centos8" + name="test-deploy-centos9" file="${TEST_DIR}/${name}.log" ensure "${name}" "${file}" @@ -75,16 +75,16 @@ run_deploy_centos8() { # Images have been setup and and subscribed for juju-qa aws # in us-east-1. Take care editing the details. # - juju metadata add-image --series centos8 ami-0d6e9a57f6259ba3a + juju metadata add-image --base centos@9 ami-0df2a11dd1fe1f8e3 # # The disk size must be >= 10G to cover the image above. # Ensure we use an instance with enough disk space. # - juju deploy ./tests/suites/deploy/charms/centos-dummy-sink --series centos8 --constraints root-disk=10G + juju deploy ./tests/suites/deploy/charms/centos-dummy-sink --base centos@9 --constraints root-disk=10G - base=$(juju status --format=json | jq '.applications."dummy-sink".base') - echo "$base" | check "centos@8" + juju status --format=json | jq '.applications."dummy-sink".base.name' | check "centos" + juju status --format=json | jq '.applications."dummy-sink".base.channel' | check "9" wait_for "dummy-sink" "$(idle_condition "dummy-sink")" diff --git a/version/current_test.go b/version/current_test.go index 0452194c4c7..e6e6817b487 100644 --- a/version/current_test.go +++ b/version/current_test.go @@ -5,7 +5,6 @@ package version import ( "os/exec" - "runtime" osseries "github.com/juju/os/v2/series" gc "gopkg.in/check.v1" @@ -28,27 +27,13 @@ func (*CurrentSuite) TestCurrentSeries(c *gc.C) { if err != nil { // If the command fails (for instance if we're running on some other // platform) then CurrentSeries should be unknown. - switch runtime.GOOS { - case "darwin": - c.Check(s, gc.Matches, `mavericks|mountainlion|lion|snowleopard`) - default: - currentOS, err := corebase.GetOSFromSeries(s) - c.Assert(err, gc.IsNil) - if s != "n/a" { - // There is no lsb_release command on CentOS. - if currentOS == os.CentOS { - c.Check(s, gc.Matches, `centos\d+`) - } - } - } - } else { - //OpenSUSE lsb-release returns n/a currentOS, err := corebase.GetOSFromSeries(s) c.Assert(err, gc.IsNil) - if string(out) == "n/a" && currentOS == os.OpenSUSE { - c.Check(s, gc.Matches, "opensuseleap") - } else { - c.Assert(string(out), gc.Equals, "Codename:\t"+s+"\n") + // There is no lsb_release command on CentOS. + if s != "n/a" && currentOS == os.CentOS { + c.Check(s, gc.Matches, `centos\d+`) } + } else { + c.Assert(string(out), gc.Equals, "Codename:\t"+s+"\n") } } diff --git a/worker/uniter/runner/context/env.go b/worker/uniter/runner/context/env.go index a6fe2bb7690..91974e69a8d 100644 --- a/worker/uniter/runner/context/env.go +++ b/worker/uniter/runner/context/env.go @@ -111,8 +111,6 @@ func OSDependentEnvVars(paths Paths, env Environmenter) []string { return ubuntuEnv(paths, env) case jujuos.CentOS: return centosEnv(paths, env) - case jujuos.OpenSUSE: - return opensuseEnv(paths, env) case jujuos.GenericLinux: return genericLinuxEnv(paths, env) } @@ -157,27 +155,6 @@ func centosEnv(paths Paths, envVars Environmenter) []string { return env } -func opensuseEnv(paths Paths, envVars Environmenter) []string { - path := appendPath(paths, envVars) - - env := []string{ - "LANG=C.UTF-8", - } - - env = append(env, path...) - - // OpenSUSE 42 does not include patch 20150502 for ncurses 5.9 with - // with terminal definitions for "tmux" and "tmux-256color" - hostSeries, err := series.HostSeries() - if err == nil && hostSeries == "opensuseleap" { - env = append(env, "TERM=screen-256color") - } else { - env = append(env, "TERM=tmux-256color") - } - - return env -} - func genericLinuxEnv(paths Paths, envVars Environmenter) []string { path := appendPath(paths, envVars) diff --git a/worker/uniter/runner/context/env_test.go b/worker/uniter/runner/context/env_test.go index b6a01154a01..1fcb4dc866e 100644 --- a/worker/uniter/runner/context/env_test.go +++ b/worker/uniter/runner/context/env_test.go @@ -296,67 +296,6 @@ func (s *EnvSuite) TestEnvCentos(c *gc.C) { } } -func (s *EnvSuite) TestEnvOpenSUSE(c *gc.C) { - ctrl := gomock.NewController(c) - defer ctrl.Finish() - - state := mocks.NewMockState(ctrl) - state.EXPECT().StorageAttachment(names.NewStorageTag("data/0"), names.NewUnitTag("this-unit/123")).Return(params.StorageAttachment{ - Kind: params.StorageKindBlock, - Location: "/dev/sdb", - }, nil).AnyTimes() - unit := mocks.NewMockHookUnit(ctrl) - unit.EXPECT().Tag().Return(names.NewUnitTag("this-unit/123")).AnyTimes() - - s.PatchValue(&jujuos.HostOS, func() jujuos.OSType { return jujuos.OpenSUSE }) - s.PatchValue(&jujuversion.Current, version.MustParse("1.2.3")) - - // TERM is different for opensuseleap. - for _, testSeries := range []string{"opensuseleap", "opensuse"} { - s.PatchValue(&osseries.HostSeries, func() (string, error) { return testSeries, nil }) - openSUSEVars := []string{ - "LANG=C.UTF-8", - "PATH=path-to-tools:foo:bar", - } - - if testSeries == "opensuseleap" { - openSUSEVars = append(openSUSEVars, "TERM=screen-256color") - } else { - openSUSEVars = append(openSUSEVars, "TERM=tmux-256color") - } - - environmenter := context.NewRemoteEnvironmenter( - func() []string { return []string{} }, - func(k string) string { - switch k { - case "PATH": - return "foo:bar" - } - return "" - }, - func(k string) (string, bool) { - switch k { - case "PATH": - return "foo:bar", true - } - return "", false - }, - ) - - ctx, contextVars := s.getContext(false, state, unit) - paths, pathsVars := s.getPaths() - actualVars, err := ctx.HookVars(paths, false, environmenter) - c.Assert(err, jc.ErrorIsNil) - s.assertVars(c, actualVars, contextVars, pathsVars, openSUSEVars) - - relationVars := s.setRelation(ctx) - secretVars := s.setSecret(ctx) - actualVars, err = ctx.HookVars(paths, false, environmenter) - c.Assert(err, jc.ErrorIsNil) - s.assertVars(c, actualVars, contextVars, pathsVars, openSUSEVars, relationVars, secretVars) - } -} - func (s *EnvSuite) TestEnvGenericLinux(c *gc.C) { ctrl := gomock.NewController(c) defer ctrl.Finish()