Skip to content

Commit

Permalink
Merge branch '3.6' into 3.6-into-main
Browse files Browse the repository at this point in the history
Conflicts:
- agent/agentbootstrap/bootstrap.go
- api/agent/upgradeseries/upgradeseries.go
- api/agent/upgradeseries/upgradeseries_test.go
- api/controller/caasunitprovisioner/client.go
- api/facadeversions.go
- apiserver/facades/agent/upgradeseries/register.go
- apiserver/facades/agent/upgradeseries/upgradeseries.go
- apiserver/facades/agent/upgradeseries/upgradeseries_test.go
- apiserver/facades/client/modelupgrader/upgrader_test.go
- apiserver/tools.go
- caas/kubernetes/provider/k8s.go
- cmd/containeragent/initialize/package_test.go
- cmd/juju/commands/bootstrap_test.go
- cmd/jujud-controller/agent/bootstrap_test.go
- container/kvm/initialisation.go
- core/base/supportedseries.go
- core/base/supportedseries_test.go
- core/os/os.go
- environs/bootstrap/bootstrap_test.go
- environs/bootstrap/tools_test.go
- environs/manual/sshprovisioner/provisioner_test.go
- environs/testing/tools.go
- internal/cloudconfig/cloudinit/interface.go
- internal/cloudconfig/machinecloudconfig.go
- internal/cloudconfig/machinecloudconfig_test.go
- internal/cloudconfig/providerinit/providerinit.go
- internal/cloudconfig/providerinit/renderers/interface.go
- internal/cloudconfig/userdatacfg.go
- internal/cloudconfig/userdatacfg_unix.go
- internal/container/lxd/export_test.go
- internal/container/lxd/initialisation_linux.go
- internal/container/lxd/initialisation_test.go
- internal/mongo/mongo.go
- internal/provider/azure/internal/imageutils/images.go
- internal/provider/azure/userdata.go
- internal/provider/common/disk_test.go
- internal/provider/ec2/ebs.go
- internal/provider/ec2/userdata.go
- internal/provider/ec2/userdata_test.go
- internal/provider/equinix/userdata.go
- internal/provider/gce/userdata.go
- internal/provider/gce/userdata_test.go
- internal/provider/lxd/userdata.go
- internal/provider/maas/package_test.go
- internal/provider/maas/userdata.go
- internal/provider/maas/userdata_test.go
- internal/provider/oci/userdata.go
- internal/provider/openstack/userdata.go
- internal/provider/openstack/userdata_test.go
- internal/provider/vsphere/userdata.go
- internal/provider/vsphere/userdata_test.go
- internal/worker/uniter/paths_test.go
- internal/worker/upgradeseries/worker.go
- juju/testing/conn.go
- state/application.go
- state/backups/package_test.go
- testing/base.go
- worker/provisioner/provisioner_test.go
- worker/upgrader/upgrader_test.go

Signed-off-by: Jack Shaw <jack.shaw@canonical.com>
  • Loading branch information
jack-w-shaw committed Apr 22, 2024
2 parents 5a4a0f3 + 7139314 commit cdf3a72
Show file tree
Hide file tree
Showing 117 changed files with 1,184 additions and 845 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/microk8s-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ jobs:
if: ${{ failure() }}

- name: Upload debug log
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v2
uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v2
with:
name: juju-debug-actions
path: juju-debug.log
Expand Down Expand Up @@ -158,7 +158,7 @@ jobs:
if: ${{ failure() }}

- name: Upload inspect tarball
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v2
uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v2
with:
name: inspection-report-actions
path: ./inspection-report-${{ strategy.job-index }}.tar.gz
Expand All @@ -174,7 +174,7 @@ jobs:
if: ${{ failure() }}

- name: Upload kubectl describe
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v2
uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v2
with:
name: kubectl-describe-actions
path: describe/*.describe
Expand All @@ -192,7 +192,7 @@ jobs:
if: ${{ failure() }}

- name: Upload kubeflow pod logs
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v2
uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v2
with:
name: kubectl-stdout-actions
path: stdout/*.log
Expand Down
10 changes: 2 additions & 8 deletions agent/agentbootstrap/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,19 @@ import (
"github.com/juju/loggo/v2"
"github.com/juju/mgo/v3"
"github.com/juju/names/v5"
utilseries "github.com/juju/os/v2/series"

"github.com/juju/juju/agent"
"github.com/juju/juju/caas"
k8sconstants "github.com/juju/juju/caas/kubernetes/provider/constants"
"github.com/juju/juju/cloud"
"github.com/juju/juju/controller/modelmanager"
coreagent "github.com/juju/juju/core/agent"
corebase "github.com/juju/juju/core/base"
"github.com/juju/juju/core/credential"
coredatabase "github.com/juju/juju/core/database"
"github.com/juju/juju/core/instance"
"github.com/juju/juju/core/model"
corenetwork "github.com/juju/juju/core/network"
coreos "github.com/juju/juju/core/os"
"github.com/juju/juju/core/permission"
userbootstrap "github.com/juju/juju/domain/access/bootstrap"
cloudbootstrap "github.com/juju/juju/domain/cloud/bootstrap"
Expand Down Expand Up @@ -611,12 +610,7 @@ func (b *AgentBootstrap) initBootstrapMachine(
hardware = *stateParams.BootstrapMachineHardwareCharacteristics
}

hostSeries, err := utilseries.HostSeries()
if err != nil {
return nil, errors.Trace(err)
}

base, err := corebase.GetBaseFromSeries(hostSeries)
base, err := coreos.HostBase()
if err != nil {
return nil, errors.Trace(err)
}
Expand Down
51 changes: 3 additions & 48 deletions api/agent/upgradeseries/upgradeseries.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,47 +78,6 @@ func (s *Client) MachineStatus() (model.UpgradeSeriesStatus, error) {
return "", errors.Trace(r.Error)
}

// CurrentSeries returns what Juju thinks the current series of the machine is.
// Note that a machine could have been upgraded out-of-band by running
// do-release-upgrade outside of the upgrade-machine workflow,
// making this value incorrect.
func (s *Client) CurrentSeries() (string, error) {
series, err := s.series("CurrentSeries")
return series, errors.Trace(err)
}

// TargetSeries returns the series that a machine has been locked
// for upgrading to.
func (s *Client) TargetSeries() (string, error) {
series, err := s.series("TargetSeries")
return series, errors.Trace(err)
}

func (s *Client) series(methodName string) (string, error) {
var results params.StringResults
args := params.Entities{
Entities: []params.Entity{{Tag: s.authTag.String()}},
}

err := s.facade.FacadeCall(context.TODO(), methodName, args, &results)
if err != nil {
return "", errors.Trace(err)
}
if len(results.Results) != 1 {
return "", errors.Errorf("expected 1 result, got %d", len(results.Results))
}

r := results.Results[0]
if r.Error == nil {
return r.Result, nil
}

if params.IsCodeNotFound(r.Error) {
return "", errors.NewNotFound(r.Error, "")
}
return "", errors.Trace(r.Error)
}

// UnitsPrepared returns the units running on this machine that have
// completed their upgrade-machine preparation, and are ready to be stopped and
// have their unit agent services converted for the target series.
Expand Down Expand Up @@ -220,18 +179,14 @@ func (s *Client) StartUnitCompletion(reason string) error {
// completely finished, passing the current host OS series.
// We use the name "Finish" to distinguish this method from the various
// "Complete" phases.
func (s *Client) FinishUpgradeSeries(hostSeries string) error {
func (s *Client) FinishUpgradeSeries(hostBase corebase.Base) error {
var results params.ErrorResults
base, err := corebase.GetBaseFromSeries(hostSeries)
if err != nil {
return errors.Trace(err)
}
args := params.UpdateChannelArgs{Args: []params.UpdateChannelArg{{
Entity: params.Entity{Tag: s.authTag.String()},
Channel: base.Channel.Track,
Channel: hostBase.Channel.Track,
}}}

err = s.facade.FacadeCall(context.TODO(), "FinishUpgradeSeries", args, &results)
err := s.facade.FacadeCall(context.TODO(), "FinishUpgradeSeries", args, &results)
if err != nil {
return err
}
Expand Down
41 changes: 2 additions & 39 deletions api/agent/upgradeseries/upgradeseries_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (

"github.com/juju/juju/api/agent/upgradeseries"
"github.com/juju/juju/api/base/mocks"
corebase "github.com/juju/juju/core/base"
"github.com/juju/juju/core/model"
"github.com/juju/juju/core/status"
"github.com/juju/juju/rpc/params"
Expand Down Expand Up @@ -98,44 +99,6 @@ func (s *upgradeSeriesSuite) TestSetMachineStatus(c *gc.C) {
c.Assert(err, gc.IsNil)
}

func (s *upgradeSeriesSuite) TestCurrentSeries(c *gc.C) {
ctrl := gomock.NewController(c)
defer ctrl.Finish()

fCaller := mocks.NewMockFacadeCaller(ctrl)

resultSource := params.StringResults{
Results: []params.StringResult{{
Result: "xenial",
}},
}
fCaller.EXPECT().FacadeCall(gomock.Any(), "CurrentSeries", s.args, gomock.Any()).SetArg(3, resultSource)

api := upgradeseries.NewStateFromCaller(fCaller, s.tag)
target, err := api.CurrentSeries()
c.Assert(err, gc.IsNil)
c.Check(target, gc.Equals, "xenial")
}

func (s *upgradeSeriesSuite) TestTargetSeries(c *gc.C) {
ctrl := gomock.NewController(c)
defer ctrl.Finish()

fCaller := mocks.NewMockFacadeCaller(ctrl)

resultSource := params.StringResults{
Results: []params.StringResult{{
Result: "bionic",
}},
}
fCaller.EXPECT().FacadeCall(gomock.Any(), "TargetSeries", s.args, gomock.Any()).SetArg(3, resultSource)

api := upgradeseries.NewStateFromCaller(fCaller, s.tag)
target, err := api.TargetSeries()
c.Assert(err, gc.IsNil)
c.Check(target, gc.Equals, "bionic")
}

func (s *upgradeSeriesSuite) TestUnitsPrepared(c *gc.C) {
ctrl := gomock.NewController(c)
defer ctrl.Finish()
Expand Down Expand Up @@ -217,7 +180,7 @@ func (s *upgradeSeriesSuite) TestFinishUpgradeSeries(c *gc.C) {
fCaller.EXPECT().FacadeCall(gomock.Any(), "FinishUpgradeSeries", args, gomock.Any()).SetArg(3, resultSource)

api := upgradeseries.NewStateFromCaller(fCaller, s.tag)
err := api.FinishUpgradeSeries("xenial")
err := api.FinishUpgradeSeries(corebase.MustParseBaseFromString("ubuntu@16.04"))
c.Assert(err, gc.IsNil)
}

Expand Down
2 changes: 1 addition & 1 deletion api/facadeversions.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ var facadeVersions = facades.FacadeVersions{
"UnitAssigner": {1},
"Uniter": {19},
"Upgrader": {1},
"UpgradeSeries": {3},
"UpgradeSeries": {4},
"UpgradeSteps": {3},
"UserManager": {3},
"VolumeAttachmentsWatcher": {2},
Expand Down
1 change: 1 addition & 0 deletions api/package_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ func (*ImportSuite) TestImports(c *gc.C) {
"core/model",
"core/network",
"core/os",
"core/os/ostype",
"core/paths",
"core/relation",
"core/resources",
Expand Down
5 changes: 3 additions & 2 deletions apiserver/common/tools_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"github.com/juju/juju/core/arch"
"github.com/juju/juju/core/network"
coreos "github.com/juju/juju/core/os"
"github.com/juju/juju/core/os/ostype"
"github.com/juju/juju/environs"
"github.com/juju/juju/environs/config"
envtools "github.com/juju/juju/environs/tools"
Expand Down Expand Up @@ -132,7 +133,7 @@ func (s *getToolsSuite) TestOSTools(c *gc.C) {

current := coretesting.CurrentVersion()
currentCopy := current
currentCopy.Release = coretesting.HostSeries(c)
currentCopy.Release = "foo"
configAttrs := map[string]interface{}{
"name": "some-name",
"type": "some-type",
Expand Down Expand Up @@ -475,7 +476,7 @@ func (s *findToolsSuite) TestFindToolsExactInStorage(c *gc.C) {
{Version: "1.22.0-ubuntu-amd64"},
}
s.PatchValue(&arch.HostArch, func() string { return arch.AMD64 })
s.PatchValue(&coreos.HostOS, func() coreos.OSType { return coreos.Ubuntu })
s.PatchValue(&coreos.HostOS, func() ostype.OSType { return ostype.Ubuntu })

s.expectMatchingStorageTools(storageMetadata, nil)
s.PatchValue(&jujuversion.Current, version.MustParseBinary("1.22-beta1-ubuntu-amd64").Number)
Expand Down
2 changes: 1 addition & 1 deletion apiserver/facades/agent/upgradeseries/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (

// Register is called to expose a package of facades onto a given registry.
func Register(registry facade.FacadeRegistry) {
registry.MustRegister("UpgradeSeries", 3, func(stdCtx context.Context, ctx facade.ModelContext) (facade.Facade, error) {
registry.MustRegister("UpgradeSeries", 4, func(stdCtx context.Context, ctx facade.ModelContext) (facade.Facade, error) {
return newAPI(ctx) // Adds SetStatus.
}, reflect.TypeOf((*API)(nil)))
}
Expand Down
60 changes: 0 additions & 60 deletions apiserver/facades/agent/upgradeseries/upgradeseries.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
"github.com/juju/juju/apiserver/common"
apiservererrors "github.com/juju/juju/apiserver/errors"
"github.com/juju/juju/apiserver/facade"
corebase "github.com/juju/juju/core/base"
"github.com/juju/juju/core/model"
"github.com/juju/juju/core/status"
"github.com/juju/juju/rpc/params"
Expand Down Expand Up @@ -118,65 +117,6 @@ func (a *API) SetMachineStatus(ctx context.Context, args params.UpgradeSeriesSta
return result, nil
}

// CurrentSeries returns what Juju thinks the current series of the machine is.
// Note that a machine could have been upgraded out-of-band by running
// do-release-upgrade outside of the upgrade-machine workflow,
// making this value incorrect.
func (a *API) CurrentSeries(ctx context.Context, args params.Entities) (params.StringResults, error) {
result := params.StringResults{}

canAccess, err := a.AccessMachine()
if err != nil {
return result, err
}

results := make([]params.StringResult, len(args.Entities))
for i, entity := range args.Entities {
machine, err := a.authAndGetMachine(ctx, entity.Tag, canAccess)
if err != nil {
results[i].Error = apiservererrors.ServerError(err)
continue
}
series, err := corebase.GetSeriesFromChannel(machine.Base().OS, machine.Base().Channel)
if err != nil {
results[i].Error = apiservererrors.ServerError(err)
continue
}
results[i].Result = series
}

result.Results = results
return result, nil
}

// TargetSeries returns the series that a machine has been locked
// for upgrading to.
func (a *API) TargetSeries(ctx context.Context, args params.Entities) (params.StringResults, error) {
result := params.StringResults{}

canAccess, err := a.AccessMachine()
if err != nil {
return result, err
}

results := make([]params.StringResult, len(args.Entities))
for i, entity := range args.Entities {
machine, err := a.authAndGetMachine(ctx, entity.Tag, canAccess)
if err != nil {
results[i].Error = apiservererrors.ServerError(err)
continue
}
target, err := machine.UpgradeSeriesTarget()
if err != nil {
results[i].Error = apiservererrors.ServerError(err)
}
results[i].Result = target
}

result.Results = results
return result, nil
}

// StartUnitCompletion starts the upgrade series completion phase for all subordinate
// units of a given machine.
func (a *API) StartUnitCompletion(ctx context.Context, args params.UpgradeSeriesStartUnitCompletionParam) (params.ErrorResults, error) {
Expand Down
24 changes: 0 additions & 24 deletions apiserver/facades/agent/upgradeseries/upgradeseries_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,30 +89,6 @@ func (s *upgradeSeriesSuite) TestSetMachineStatus(c *gc.C) {
})
}

func (s *upgradeSeriesSuite) TestCurrentSeries(c *gc.C) {
defer s.arrangeTest(c).Finish()

s.machine.EXPECT().Base().Return(state.UbuntuBase("16.04")).AnyTimes()

results, err := s.api.CurrentSeries(context.Background(), s.entityArgs)
c.Assert(err, jc.ErrorIsNil)
c.Assert(results, gc.DeepEquals, params.StringResults{
Results: []params.StringResult{{Result: "xenial"}},
})
}

func (s *upgradeSeriesSuite) TestUpgradeSeriesTarget(c *gc.C) {
defer s.arrangeTest(c).Finish()

s.machine.EXPECT().UpgradeSeriesTarget().Return("bionic", nil)

results, err := s.api.TargetSeries(context.Background(), s.entityArgs)
c.Assert(err, jc.ErrorIsNil)
c.Assert(results, gc.DeepEquals, params.StringResults{
Results: []params.StringResult{{Result: "bionic"}},
})
}

func (s *upgradeSeriesSuite) TestStartUnitCompletion(c *gc.C) {
defer s.arrangeTest(c).Finish()

Expand Down
2 changes: 1 addition & 1 deletion apiserver/facades/client/application/deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (s *DeployLocalSuite) TestDeployMinimal(c *gc.C) {
c.Assert(err, jc.ErrorIsNil)
s.assertCharm(c, app, s.charm.URL())
s.assertSettings(c, app, charm.Settings{})
s.assertApplicationConfig(c, app, coreconfig.ConfigAttributes(nil))
s.assertApplicationConfig(c, app, coreconfig.ConfigAttributes{})
s.assertConstraints(c, app, constraints.MustParse("arch=amd64"))
s.assertMachines(c, app, constraints.Value{})
}
Expand Down
5 changes: 3 additions & 2 deletions apiserver/facades/client/client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"github.com/juju/juju/core/model"
"github.com/juju/juju/core/multiwatcher"
coreos "github.com/juju/juju/core/os"
"github.com/juju/juju/core/os/ostype"
"github.com/juju/juju/core/permission"
"github.com/juju/juju/core/status"
"github.com/juju/juju/domain/access/service"
Expand Down Expand Up @@ -477,7 +478,7 @@ func (s *findToolsSuite) TestFindToolsCAASReleased(c *gc.C) {
{Version: version.MustParseBinary("2.9.10-ubuntu-amd64")},
{Version: version.MustParseBinary("2.9.11-ubuntu-amd64")},
}
s.PatchValue(&coreos.HostOS, func() coreos.OSType { return coreos.Ubuntu })
s.PatchValue(&coreos.HostOS, func() ostype.OSType { return ostype.Ubuntu })

gomock.InOrder(
authorizer.EXPECT().AuthClient().Return(true),
Expand Down Expand Up @@ -562,7 +563,7 @@ func (s *findToolsSuite) TestFindToolsCAASNonReleased(c *gc.C) {
{Version: version.MustParseBinary("2.9.11-ubuntu-amd64")},
{Version: version.MustParseBinary("2.9.12-ubuntu-amd64")},
}
s.PatchValue(&coreos.HostOS, func() coreos.OSType { return coreos.Ubuntu })
s.PatchValue(&coreos.HostOS, func() ostype.OSType { return ostype.Ubuntu })

gomock.InOrder(
authorizer.EXPECT().AuthClient().Return(true),
Expand Down
Loading

0 comments on commit cdf3a72

Please sign in to comment.