inspektor-gadget

Форк
0
/
gadget-registry.go 
50 строк · 1.4 Кб
1
// Copyright 2022-2023 The Inspektor Gadget authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15
package gadgetregistry
16

17
import (
18
	"fmt"
19
	"sort"
20

21
	"github.com/inspektor-gadget/inspektor-gadget/pkg/gadgets"
22
)
23

24
var gadgetRegistry = map[string]gadgets.GadgetDesc{}
25

26
func Register(gadget gadgets.GadgetDesc) {
27
	key := gadget.Category() + "/" + gadget.Name()
28
	if _, ok := gadgetRegistry[key]; ok {
29
		panic(fmt.Sprintf("Gadget %q already registered", key))
30
	}
31
	gadgetRegistry[key] = gadget
32
}
33

34
func Get(category, name string) gadgets.GadgetDesc {
35
	return gadgetRegistry[category+"/"+name]
36
}
37

38
func GetAll() (gadgets []gadgets.GadgetDesc) {
39
	for _, g := range gadgetRegistry {
40
		gadgets = append(gadgets, g)
41
	}
42

43
	// Return gadgets in deterministic order
44
	sort.Slice(gadgets, func(i, j int) bool {
45
		a := fmt.Sprintf("%s-%s", gadgets[i].Category(), gadgets[i].Name())
46
		b := fmt.Sprintf("%s-%s", gadgets[j].Category(), gadgets[j].Name())
47
		return a < b
48
	})
49
	return
50
}
51

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.