@@ -560,7 +560,7 @@ func (m *Manager) selectExtensions(task *Task, addon *crd.Addon) (err error) {
560
560
matched := false
561
561
selector := NewSelector (m .DB , task )
562
562
for _ , extension := range m .cluster .Extensions () {
563
- matched , err = m .matchAddon (extension , addon )
563
+ matched , err = task .matchAddon (extension , addon )
564
564
if err != nil {
565
565
return
566
566
}
@@ -579,30 +579,6 @@ func (m *Manager) selectExtensions(task *Task, addon *crd.Addon) (err error) {
579
579
return
580
580
}
581
581
582
- // matchAddon - returns true when the extension's `addon`
583
- // (ref) matches the addon name.
584
- // The `ref` is matched as a REGEX when it contains
585
- // characters other than: [0-9A-Za-z_].
586
- func (m * Manager ) matchAddon (extension * crd.Extension , addon * crd.Addon ) (matched bool , err error ) {
587
- ref := strings .TrimSpace (extension .Spec .Addon )
588
- p := IsRegex
589
- if p .MatchString (ref ) {
590
- p , err = regexp .Compile (ref )
591
- if err != nil {
592
- err = & ExtAddonNotValid {
593
- Extension : extension .Name ,
594
- Reason : err .Error (),
595
- }
596
- return
597
- }
598
- matched = p .MatchString (addon .Name )
599
- } else {
600
-
601
- matched = addon .Name == ref
602
- }
603
- return
604
- }
605
-
606
582
// postpone Postpones a task as needed based on rules.
607
583
// postpone order:
608
584
// - priority (lower)
@@ -1361,7 +1337,12 @@ func (r *Task) Run(cluster *Cluster) (started bool, err error) {
1361
1337
return
1362
1338
}
1363
1339
for _ , extension := range extensions {
1364
- if r .Addon != extension .Spec .Addon {
1340
+ matched := false
1341
+ matched , err = r .matchAddon (& extension , addon )
1342
+ if err != nil {
1343
+ return
1344
+ }
1345
+ if ! matched {
1365
1346
err = & ExtensionNotValid {
1366
1347
Name : extension .Name ,
1367
1348
Addon : addon .Name ,
@@ -1620,7 +1601,7 @@ func (r *Task) podFailed(pod *core.Pod, client k8s.Client) {
1620
1601
}
1621
1602
}
1622
1603
1623
- // getExtensions by name .
1604
+ // getExtensions returns defined extensions .
1624
1605
func (r * Task ) getExtensions (client k8s.Client ) (extensions []crd.Extension , err error ) {
1625
1606
for _ , name := range r .Extensions {
1626
1607
extension := crd.Extension {}
@@ -1646,6 +1627,29 @@ func (r *Task) getExtensions(client k8s.Client) (extensions []crd.Extension, err
1646
1627
return
1647
1628
}
1648
1629
1630
+ // matchAddon - returns true when the extension's `addon`
1631
+ // (ref) matches the addon name.
1632
+ // The `ref` is matched as a REGEX when it contains
1633
+ // characters other than: [0-9A-Za-z_].
1634
+ func (r * Task ) matchAddon (extension * crd.Extension , addon * crd.Addon ) (matched bool , err error ) {
1635
+ ref := strings .TrimSpace (extension .Spec .Addon )
1636
+ p := IsRegex
1637
+ if p .MatchString (ref ) {
1638
+ p , err = regexp .Compile (ref )
1639
+ if err != nil {
1640
+ err = & ExtAddonNotValid {
1641
+ Extension : extension .Name ,
1642
+ Reason : err .Error (),
1643
+ }
1644
+ return
1645
+ }
1646
+ matched = p .MatchString (addon .Name )
1647
+ } else {
1648
+ matched = addon .Name == ref
1649
+ }
1650
+ return
1651
+ }
1652
+
1649
1653
// pod build the pod.
1650
1654
func (r * Task ) pod (
1651
1655
addon * crd.Addon ,
0 commit comments