Skip to content

Commit

Permalink
Update deployment file structure
Browse files Browse the repository at this point in the history
Signed-off-by: Jian Qiu <[email protected]>
  • Loading branch information
qiujian16 committed Jun 14, 2024
1 parent c1c02f1 commit bca81d6
Show file tree
Hide file tree
Showing 4 changed files with 95 additions and 118 deletions.
50 changes: 16 additions & 34 deletions pkg/cmd/install/hubaddon/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,6 @@ import (
"open-cluster-management.io/clusteradm/pkg/version"
)

const (
appMgrAddonName = "application-manager"
policyFrameworkAddonName = "governance-policy-framework"
)

func (o *Options) complete(cmd *cobra.Command, args []string) (err error) {
klog.V(1).InfoS("addon options:", "dry-run", o.ClusteradmFlags.DryRun, "names", o.names, "output-file", o.outputFile)
return nil
Expand All @@ -38,9 +33,9 @@ func (o *Options) validate() (err error) {
names := strings.Split(o.names, ",")
for _, n := range names {
switch n {
case appMgrAddonName:
case scenario.AppMgrAddonName:
continue
case policyFrameworkAddonName:
case scenario.PolicyFrameworkAddonName:
continue
default:
return fmt.Errorf("invalid add-on name %s", n)
Expand Down Expand Up @@ -79,34 +74,21 @@ func (o *Options) runWithClient() error {
r := reader.NewResourceReader(o.ClusteradmFlags.KubectlFactory, o.ClusteradmFlags.DryRun, o.Streams)

for _, addon := range o.values.hubAddons {
switch addon {
// Install the Application Management Addon
case appMgrAddonName:
err := r.Apply(scenario.Files, o.values, scenario.AppManagerConfigFiles...)
if err != nil {
return err
}
err = r.Apply(scenario.Files, o.values, scenario.AppManagerDeploymentFiles...)
if err != nil {
return err
}

fmt.Fprintf(o.Streams.Out, "Installing built-in %s add-on to the Hub cluster...\n", appMgrAddonName)

// Install the Policy Framework Addon
case policyFrameworkAddonName:
err := r.Apply(scenario.Files, o.values, scenario.PolicyFrameworkConfigFiles...)
if err != nil {
return fmt.Errorf("Error deploying framework deployment dependencies: %w", err)
}

err = r.Apply(scenario.Files, o.values, scenario.PolicyFrameworkDeploymentFiles...)
if err != nil {
return fmt.Errorf("Error deploying framework deployments: %w", err)
}

fmt.Fprintf(o.Streams.Out, "Installing built-in %s add-on to the Hub cluster...\n", policyFrameworkAddonName)
files, ok := scenario.AddonDeploymentFiles[addon]
if !ok {
continue
}
err := r.Apply(scenario.Files, o.values, files.ConfigFiles...)
if err != nil {
return fmt.Errorf("Error deploying %s dependencies: %w", addon, err)
}
err = r.Apply(scenario.Files, o.values, files.DeploymentFiles...)
if err != nil {
return fmt.Errorf("Error deploying %s deployments: %w", addon, err)
}

fmt.Fprintf(o.Streams.Out, "Installing built-in %s add-on to the Hub cluster...\n", addon)

}

if len(o.outputFile) > 0 {
Expand Down
3 changes: 2 additions & 1 deletion pkg/cmd/install/hubaddon/exec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/cli-runtime/pkg/genericclioptions"
"open-cluster-management.io/clusteradm/pkg/cmd/install/hubaddon/scenario"
"open-cluster-management.io/clusteradm/pkg/version"
)

Expand Down Expand Up @@ -100,7 +101,7 @@ var _ = ginkgo.Describe("install hub-addon", func() {
bundleVersion: ocmVersion,
values: Values{
Namespace: invalidNamespace,
hubAddons: []string{appMgrAddonName},
hubAddons: []string{scenario.AppMgrAddonName},
},
Streams: genericclioptions.IOStreams{Out: os.Stdout, ErrOut: os.Stderr},
}
Expand Down
109 changes: 61 additions & 48 deletions pkg/cmd/install/hubaddon/scenario/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,55 +8,68 @@ import (
//go:embed addon
var Files embed.FS

var (
PolicyFrameworkConfigFiles = []string{
"addon/policy/addon-controller_clusterrole.yaml",
"addon/policy/addon-controller_clusterrolebinding.yaml",
"addon/policy/addon-controller_role.yaml",
"addon/policy/addon-controller_rolebinding.yaml",
"addon/policy/addon-controller_serviceaccount.yaml",
"addon/policy/policy.open-cluster-management.io_placementbindings.yaml",
"addon/policy/policy.open-cluster-management.io_policies.yaml",
"addon/policy/policy.open-cluster-management.io_policyautomations.yaml",
"addon/policy/policy.open-cluster-management.io_policysets.yaml",
"addon/policy/propagator_clusterrole.yaml",
"addon/policy/propagator_clusterrolebinding.yaml",
"addon/policy/propagator_role.yaml",
"addon/policy/propagator_rolebinding.yaml",
"addon/policy/propagator_service.yaml",
"addon/policy/propagator_serviceaccount.yaml",
"addon/policy/clustermanagementaddon_configpolicy.yaml",
"addon/policy/clustermanagementaddon_policyframework.yaml",
"addon/appmgr/crd_placementrule.yaml",
}

PolicyFrameworkDeploymentFiles = []string{
"addon/policy/addon-controller_deployment.yaml",
"addon/policy/propagator_deployment.yaml",
}
const (
AppMgrAddonName = "application-manager"
PolicyFrameworkAddonName = "governance-policy-framework"
)

AppManagerConfigFiles = []string{
"addon/appmgr/clustermanagementaddon_appmgr.yaml",
"addon/appmgr/clusterrole_agent.yaml",
"addon/appmgr/clusterrole_binding.yaml",
"addon/appmgr/clusterrole.yaml",
"addon/appmgr/crd_channel.yaml",
"addon/appmgr/crd_helmrelease.yaml",
"addon/appmgr/crd_placementrule.yaml",
"addon/appmgr/crd_subscription.yaml",
"addon/appmgr/crd_subscriptionstatuses.yaml",
"addon/appmgr/crd_report.yaml",
"addon/appmgr/crd_clusterreport.yaml",
"addon/appmgr/service_account.yaml",
"addon/appmgr/service_metrics.yaml",
"addon/appmgr/service_operator.yaml",
"addon/appmgr/mutatingwebhookconfiguration.yaml",
}
type AddonDeploymentFile struct {
ConfigFiles []string
DeploymentFiles []string
}

AppManagerDeploymentFiles = []string{
"addon/appmgr/deployment_channel.yaml",
"addon/appmgr/deployment_subscription.yaml",
"addon/appmgr/deployment_placementrule.yaml",
"addon/appmgr/deployment_appsubsummary.yaml",
var (
AddonDeploymentFiles = map[string]AddonDeploymentFile{
PolicyFrameworkAddonName: {
ConfigFiles: []string{
"addon/policy/addon-controller_clusterrole.yaml",
"addon/policy/addon-controller_clusterrolebinding.yaml",
"addon/policy/addon-controller_role.yaml",
"addon/policy/addon-controller_rolebinding.yaml",
"addon/policy/addon-controller_serviceaccount.yaml",
"addon/policy/policy.open-cluster-management.io_placementbindings.yaml",
"addon/policy/policy.open-cluster-management.io_policies.yaml",
"addon/policy/policy.open-cluster-management.io_policyautomations.yaml",
"addon/policy/policy.open-cluster-management.io_policysets.yaml",
"addon/policy/propagator_clusterrole.yaml",
"addon/policy/propagator_clusterrolebinding.yaml",
"addon/policy/propagator_role.yaml",
"addon/policy/propagator_rolebinding.yaml",
"addon/policy/propagator_service.yaml",
"addon/policy/propagator_serviceaccount.yaml",
"addon/policy/clustermanagementaddon_configpolicy.yaml",
"addon/policy/clustermanagementaddon_policyframework.yaml",
"addon/appmgr/crd_placementrule.yaml",
},
DeploymentFiles: []string{
"addon/policy/addon-controller_deployment.yaml",
"addon/policy/propagator_deployment.yaml",
},
},
AppMgrAddonName: {
ConfigFiles: []string{
"addon/appmgr/clustermanagementaddon_appmgr.yaml",
"addon/appmgr/clusterrole_agent.yaml",
"addon/appmgr/clusterrole_binding.yaml",
"addon/appmgr/clusterrole.yaml",
"addon/appmgr/crd_channel.yaml",
"addon/appmgr/crd_helmrelease.yaml",
"addon/appmgr/crd_placementrule.yaml",
"addon/appmgr/crd_subscription.yaml",
"addon/appmgr/crd_subscriptionstatuses.yaml",
"addon/appmgr/crd_report.yaml",
"addon/appmgr/crd_clusterreport.yaml",
"addon/appmgr/service_account.yaml",
"addon/appmgr/service_metrics.yaml",
"addon/appmgr/service_operator.yaml",
"addon/appmgr/mutatingwebhookconfiguration.yaml",
},
DeploymentFiles: []string{
"addon/appmgr/deployment_channel.yaml",
"addon/appmgr/deployment_subscription.yaml",
"addon/appmgr/deployment_placementrule.yaml",
"addon/appmgr/deployment_appsubsummary.yaml",
},
},
}
)
51 changes: 16 additions & 35 deletions pkg/cmd/uninstall/hubaddon/exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,6 @@ import (
"open-cluster-management.io/clusteradm/pkg/cmd/install/hubaddon/scenario"
)

const (
appMgrAddonName = "application-manager"
policyFrameworkAddonName = "governance-policy-framework"
)

func (o *Options) complete(cmd *cobra.Command, args []string) (err error) {
klog.V(1).InfoS("addon options:", "dry-run", o.ClusteradmFlags.DryRun, "names", o.names)
return nil
Expand All @@ -39,9 +34,9 @@ func (o *Options) validate() (err error) {
names := strings.Split(o.names, ",")
for _, n := range names {
switch n {
case appMgrAddonName:
case scenario.AppMgrAddonName:
continue
case policyFrameworkAddonName:
case scenario.PolicyFrameworkAddonName:
continue
default:
return fmt.Errorf("invalid add-on name %s", n)
Expand Down Expand Up @@ -76,35 +71,21 @@ func (o *Options) runWithClient() error {
if err := o.checkExistingAddon(addon); err != nil {
return err
}
switch addon {
// Install the Application Management Addon
case appMgrAddonName:
err := r.Delete(scenario.Files, o.values, scenario.AppManagerConfigFiles...)
if err != nil {
return err
}

err = r.Delete(scenario.Files, o.values, scenario.AppManagerDeploymentFiles...)
if err != nil {
return err
}

fmt.Fprintf(o.Streams.Out, "Uninstalling built-in %s add-on from the Hub cluster...\n", appMgrAddonName)

// Install the Policy Framework Addon
case policyFrameworkAddonName:
err := r.Delete(scenario.Files, o.values, scenario.PolicyFrameworkConfigFiles...)
if err != nil {
return fmt.Errorf("Error deploying framework deployment dependencies: %w", err)
}

err = r.Delete(scenario.Files, o.values, scenario.PolicyFrameworkDeploymentFiles...)
if err != nil {
return fmt.Errorf("Error deploying framework deployments: %w", err)
}

fmt.Fprintf(o.Streams.Out, "Uninstalling built-in %s add-on from the Hub cluster...\n", policyFrameworkAddonName)
files, ok := scenario.AddonDeploymentFiles[addon]
if !ok {
continue
}
err := r.Delete(scenario.Files, o.values, files.ConfigFiles...)
if err != nil {
return err
}

err = r.Delete(scenario.Files, o.values, files.DeploymentFiles...)
if err != nil {
return err
}

fmt.Fprintf(o.Streams.Out, "Uninstalling built-in %s add-on from the Hub cluster...\n", addon)
}

return nil
Expand Down

0 comments on commit bca81d6

Please sign in to comment.