Skip to content

Commit ae2250c

Browse files
committed
Implement SupportedFeatures() method on k8s broker
This allows the broker to obtain and report the version for the "k8s-api" assumes feature.
1 parent bf5ad23 commit ae2250c

File tree

3 files changed

+28
-3
lines changed

3 files changed

+28
-3
lines changed

caas/kubernetes/provider/k8s.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import (
5050
"github.com/juju/juju/cloudconfig/podcfg"
5151
k8sannotations "github.com/juju/juju/core/annotations"
5252
"github.com/juju/juju/core/application"
53+
"github.com/juju/juju/core/assumes"
5354
"github.com/juju/juju/core/constraints"
5455
"github.com/juju/juju/core/devices"
5556
"github.com/juju/juju/core/paths"
@@ -2704,15 +2705,16 @@ func (k *kubernetesClient) deploymentName(appName string, legacySupport bool) st
27042705
func (k *kubernetesClient) SupportedFeatures() (assumes.FeatureSet, error) {
27052706
var fs assumes.FeatureSet
27062707

2707-
k8sAPIVersion, err := k.APIVersion()
2708+
k8sAPIVersion, err := k.Version()
27082709
if err != nil {
27092710
return fs, errors.Annotatef(err, "querying kubernetes API version")
27102711
}
27112712

27122713
fs.Add(
27132714
assumes.Feature{
27142715
Name: "k8s-api",
2715-
Description: "the version of kubernetes API that charms can access",
2716+
Description: assumes.UserFriendlyFeatureDescriptions["k8s-api"],
2717+
Version: k8sAPIVersion,
27162718
},
27172719
)
27182720
return fs, nil

caas/kubernetes/provider/k8s_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"github.com/juju/juju/caas/specs"
4444
"github.com/juju/juju/core/annotations"
4545
"github.com/juju/juju/core/application"
46+
"github.com/juju/juju/core/assumes"
4647
"github.com/juju/juju/core/constraints"
4748
"github.com/juju/juju/core/devices"
4849
"github.com/juju/juju/core/network"
@@ -2981,6 +2982,27 @@ func (s *K8sBrokerSuite) TestVersion(c *gc.C) {
29812982
c.Assert(ver, gc.DeepEquals, &version.Number{Major: 1, Minor: 15})
29822983
}
29832984

2985+
func (s *K8sBrokerSuite) TestSupportedFeatures(c *gc.C) {
2986+
ctrl := s.setupController(c)
2987+
defer ctrl.Finish()
2988+
2989+
gomock.InOrder(
2990+
s.mockDiscovery.EXPECT().ServerVersion().Return(&k8sversion.Info{
2991+
Major: "1", Minor: "15+",
2992+
}, nil),
2993+
)
2994+
2995+
fs, err := s.broker.SupportedFeatures()
2996+
c.Assert(err, jc.ErrorIsNil)
2997+
c.Assert(fs.AsList(), gc.DeepEquals, []assumes.Feature{
2998+
{
2999+
Name: "k8s-api",
3000+
Description: "the Kubernetes API lets charms query and manipulate the state of API objects in a Kubernetes cluster",
3001+
Version: &version.Number{Major: 1, Minor: 15},
3002+
},
3003+
})
3004+
}
3005+
29843006
func (s *K8sBrokerSuite) TestGetServiceSvcNotFound(c *gc.C) {
29853007
ctrl := s.setupController(c)
29863008
defer ctrl.Finish()

core/assumes/sat_checker.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ var (
1515
// feature that is not included in the feature set supported by the
1616
// current model.
1717
UserFriendlyFeatureDescriptions = map[string]string{
18-
"juju": "the version of Juju used by the model",
18+
"juju": "the version of Juju used by the model",
19+
"k8s-api": "the Kubernetes API lets charms query and manipulate the state of API objects in a Kubernetes cluster",
1920
}
2021
)
2122

0 commit comments

Comments
 (0)