Skip to content

Commit

Permalink
set agent install namespace from addon deployment config for template…
Browse files Browse the repository at this point in the history
… type addons

Signed-off-by: zhujian <[email protected]>
  • Loading branch information
zhujian7 committed Sep 5, 2023
1 parent 7adf6ee commit 8b0e30c
Show file tree
Hide file tree
Showing 16 changed files with 293 additions and 28 deletions.
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module open-cluster-management.io/ocm

go 1.20

replace open-cluster-management.io/addon-framework => /home/go/src/open-cluster-management.io/addon-framework

require (
github.com/davecgh/go-spew v1.1.1
github.com/evanphx/json-patch v5.6.0+incompatible
Expand Down Expand Up @@ -29,7 +31,7 @@ require (
k8s.io/kubernetes v1.27.3
k8s.io/utils v0.0.0-20230313181309-38a27ef9d749
open-cluster-management.io/addon-framework v0.7.1-0.20230803002113-eea76f8f5ad7
open-cluster-management.io/api v0.11.1-0.20230830071821-9675ab737d20
open-cluster-management.io/api v0.11.1-0.20230905055724-cf1ead467a83
sigs.k8s.io/controller-runtime v0.15.0
sigs.k8s.io/kube-storage-version-migrator v0.0.5
)
Expand Down
6 changes: 2 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1158,10 +1158,8 @@ k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl
k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
k8s.io/utils v0.0.0-20230313181309-38a27ef9d749 h1:xMMXJlJbsU8w3V5N2FLDQ8YgU8s1EoULdbQBcAeNJkY=
k8s.io/utils v0.0.0-20230313181309-38a27ef9d749/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
open-cluster-management.io/addon-framework v0.7.1-0.20230803002113-eea76f8f5ad7 h1:GozqvUtekO4Zg90wLih3CA/ZYKLJlGKX+vL990U8DoQ=
open-cluster-management.io/addon-framework v0.7.1-0.20230803002113-eea76f8f5ad7/go.mod h1:gLGpXkdwAzzV+JB5eQPNHbZFJwp7HsKSSwgqOxGNVCw=
open-cluster-management.io/api v0.11.1-0.20230830071821-9675ab737d20 h1:R2aOyfax0T8LMofjAW5xQCQN+tEoxUiouHGK8SKFZz0=
open-cluster-management.io/api v0.11.1-0.20230830071821-9675ab737d20/go.mod h1:nsQ/G5JpfjQUg7dHpblyywWC6BRqklNaF6fIswVCHyY=
open-cluster-management.io/api v0.11.1-0.20230905055724-cf1ead467a83 h1:3zbT3sT/tEAQbpjIk6uRiTQGknQ3kQlfd11ElVuXyyQ=
open-cluster-management.io/api v0.11.1-0.20230905055724-cf1ead467a83/go.mod h1:nsQ/G5JpfjQUg7dHpblyywWC6BRqklNaF6fIswVCHyY=
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
Expand Down
22 changes: 9 additions & 13 deletions pkg/addon/templateagent/common.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package templateagent

import (
"fmt"

"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"

Expand All @@ -11,27 +13,21 @@ import (
// AddonTemplateConfigRef return the first addon template config
func AddonTemplateConfigRef(
configReferences []addonapiv1alpha1.ConfigReference) (bool, addonapiv1alpha1.ConfigReference) {
for _, config := range configReferences {
if config.Group == utils.AddOnTemplateGVR.Group && config.Resource == utils.AddOnTemplateGVR.Resource {
return true, config
}
}
return false, addonapiv1alpha1.ConfigReference{}
return utils.GetAddOnConfigRef(configReferences, utils.AddOnTemplateGVR.Group, utils.AddOnTemplateGVR.Resource)
}

// GetTemplateSpecHash returns the sha256 hash of the spec field of the addon template
func GetTemplateSpecHash(template *addonapiv1alpha1.AddOnTemplate) (string, error) {
// GetAddOnTemplateSpecHash returns the sha256 hash of the spec field of the addon template
func GetAddOnTemplateSpecHash(template *addonapiv1alpha1.AddOnTemplate) (string, error) {
if template == nil {
return "", fmt.Errorf("addon template is nil")
}
unstructuredTemplate, err := runtime.DefaultUnstructuredConverter.ToUnstructured(template)
if err != nil {
return "", err
}
specHash, err := utils.GetSpecHash(&unstructured.Unstructured{
return utils.GetSpecHash(&unstructured.Unstructured{
Object: unstructuredTemplate,
})
if err != nil {
return specHash, err
}
return specHash, nil
}

// SupportAddOnTemplate return true if the given ClusterManagementAddOn supports the AddOnTemplate
Expand Down
60 changes: 60 additions & 0 deletions pkg/addon/templateagent/common_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package templateagent

import (
"testing"

"github.com/stretchr/testify/assert"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

addonapiv1alpha1 "open-cluster-management.io/api/addon/v1alpha1"
)

func TestGetAddOnTemplateSpecHash(t *testing.T) {
cases := []struct {
name string
at *addonapiv1alpha1.AddOnTemplate
expected string
expectedErr string
}{
{
name: "addon template is nil",
at: nil,
expected: "",
expectedErr: "addon template is nil",
},
{
name: "addon template spec is nil",
at: &addonapiv1alpha1.AddOnTemplate{
ObjectMeta: metav1.ObjectMeta{
Name: "test1",
},
Spec: addonapiv1alpha1.AddOnTemplateSpec{},
},
expected: "aa3e489402ac2e99c4aef0ddc8cc2fdf1d3b6c34c7b8d040dc3fae5db60478cb",
},
{
name: "addon template spec is not nil",
at: &addonapiv1alpha1.AddOnTemplate{
ObjectMeta: metav1.ObjectMeta{
Name: "test1",
},
Spec: addonapiv1alpha1.AddOnTemplateSpec{
AddonName: "test1",
},
},
expected: "00730aa8aa1826c9a3cfd8d6858b45e1e16bcdade5cc57070ea8089c6764285e",
},
}

for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
hash, err := GetAddOnTemplateSpecHash(c.at)
if c.expectedErr != "" {
assert.Equal(t, c.expectedErr, err.Error(), "should be equal")
} else {
assert.Nil(t, err, "should be nil")
}
assert.Equal(t, c.expected, hash, "should be equal")
})
}
}
2 changes: 2 additions & 0 deletions pkg/addon/templateagent/template_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,8 @@ func (a *CRDTemplateAgentAddon) GetAgentAddonOptions() agent.AgentAddonOptions {
PermissionConfig: a.TemplatePermissionConfigFunc(),
CSRApproveCheck: a.TemplateCSRApproveCheckFunc(),
CSRSign: a.TemplateCSRSignFunc(),
AgentInstallNamespace: utils.AgentInstallNamespaceFromDeploymentConfig(
addonfactory.NewAddOnDeloymentConfigGetter(a.addonClient).Get),
},
AgentDeployTriggerClusterFilter: utils.ClusterImageRegistriesAnnotationChanged,
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/addon/templateagent/template_agent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ func TestAddonTemplateAgent_Manifests(t *testing.T) {
},
}

addonTemplateSpecHash, err := GetTemplateSpecHash(addonTemplate)
addonTemplateSpecHash, err := GetAddOnTemplateSpecHash(addonTemplate)
if err != nil {
t.Errorf("error getting template spec hash: %v", err)
}
Expand Down
5 changes: 3 additions & 2 deletions vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1412,7 +1412,7 @@ k8s.io/utils/path
k8s.io/utils/pointer
k8s.io/utils/strings/slices
k8s.io/utils/trace
# open-cluster-management.io/addon-framework v0.7.1-0.20230803002113-eea76f8f5ad7
# open-cluster-management.io/addon-framework v0.7.1-0.20230803002113-eea76f8f5ad7 => /home/go/src/open-cluster-management.io/addon-framework
## explicit; go 1.19
open-cluster-management.io/addon-framework/pkg/addonfactory
open-cluster-management.io/addon-framework/pkg/addonmanager
Expand All @@ -1432,7 +1432,7 @@ open-cluster-management.io/addon-framework/pkg/index
open-cluster-management.io/addon-framework/pkg/manager/controllers/addonconfiguration
open-cluster-management.io/addon-framework/pkg/manager/controllers/addonowner
open-cluster-management.io/addon-framework/pkg/utils
# open-cluster-management.io/api v0.11.1-0.20230830071821-9675ab737d20
# open-cluster-management.io/api v0.11.1-0.20230905055724-cf1ead467a83
## explicit; go 1.19
open-cluster-management.io/api/addon/v1alpha1
open-cluster-management.io/api/client/addon/clientset/versioned
Expand Down Expand Up @@ -1579,3 +1579,4 @@ sigs.k8s.io/structured-merge-diff/v4/value
# sigs.k8s.io/yaml v1.3.0
## explicit; go 1.12
sigs.k8s.io/yaml
# open-cluster-management.io/addon-framework => /home/go/src/open-cluster-management.io/addon-framework

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

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

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

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

Loading

0 comments on commit 8b0e30c

Please sign in to comment.