Function bodies 285 total
cli.NewRootCmd function · go · L34-L82 (49 LOC)internal/cli/root.go
func NewRootCmd(version string) *cobra.Command {
var cfgFile string
const exampleConfig = `repo_path: "/path/to/your/repo"
kubeconfig: "/path/to/your/.kube/config"
env_type: "dev"
env_region: "us-phoenix-1"
env_realm: "oc1"
category: "tenant"
log_file: "toolkit.log"
log_format: "console" # console|json|slog
log_level: "" # debug|info|warn|error (empty uses debug flag)
debug: false
filter: ""
metadata_file: "" # Optional path to a YAML or JSON file with additional metadata (e.g. tenants)
`
home, _ := os.UserHomeDir()
cfgDir := filepath.Join(home, ".config")
defaultKube := filepath.Join(home, ".kube", "config")
defaultConfig := filepath.Join(cfgDir, "toolkit", "config.yaml")
defaultMetadata := filepath.Join(cfgDir, "toolkit", "metadata.yaml")
rootCmd := &cobra.Command{
Use: "toolkit",
Short: "Toolkit CLI",
Long: "Toolkit CLI for managing and visualizing infrastructure and configuration.",
SilenceUsage: true,
SilenceErrors: false,
RunE: cli.runRootE function · go · L85-L123 (39 LOC)internal/cli/root.go
func runRootE(cfgFile *string, version string) func(cmd *cobra.Command, _ []string) error {
return func(_ *cobra.Command, _ []string) error {
// Parse config file with proper error handling (kept out of OnInitialize to preserve error semantics and tests).
if err := readConfigFile(cfgFile); err != nil {
return err
}
var cfg config.Config
if err := viper.Unmarshal(&cfg); err != nil {
return fmt.Errorf("unmarshal config: %w", err)
}
logFormat, logLevel, err := logOptionsFromViper()
if err != nil {
return err
}
logger, err := logging.NewFileLoggerWithLevel(cfg.Debug, cfg.LogFile, logFormat, logLevel)
if err != nil {
return fmt.Errorf("initialize logger: %w", err)
}
defer func() {
_ = logger.Sync()
}()
// Validate config after log options so flag errors surface first.
if err := cfg.Validate(); err != nil {
return fmt.Errorf("validate config: %w", err)
}
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.Scli.readConfigFile function · go · L125-L134 (10 LOC)internal/cli/root.go
func readConfigFile(cfgFile *string) error {
if cfgFile == nil || *cfgFile == "" {
return nil
}
viper.SetConfigFile(*cfgFile)
if err := viper.ReadInConfig(); err != nil && !errors.Is(err, os.ErrNotExist) {
return fmt.Errorf("read config file: %w", err)
}
return nil
}cli.logOptionsFromViper function · go · L136-L146 (11 LOC)internal/cli/root.go
func logOptionsFromViper() (string, string, error) {
logFormat := viper.GetString("log_format")
if err := validateLogFormat(logFormat); err != nil {
return "", "", err
}
logLevel, err := normalizeLogLevel(viper.GetString("log_level"))
if err != nil {
return "", "", err
}
return logFormat, logLevel, nil
}cli.validateLogFormat function · go · L148-L155 (8 LOC)internal/cli/root.go
func validateLogFormat(logFormat string) error {
switch logFormat {
case "console", "json", "slog":
return nil
default:
return fmt.Errorf("invalid log_format %q (valid: console|json|slog)", logFormat)
}
}cli.normalizeLogLevel function · go · L157-L168 (12 LOC)internal/cli/root.go
func normalizeLogLevel(level string) (string, error) {
logLevel := strings.ToLower(level)
switch logLevel {
case "", "debug", "info", "warn", "warning", "error":
if logLevel == "warning" {
logLevel = "warn"
}
return logLevel, nil
default:
return "", fmt.Errorf("invalid log_level %q (valid: debug|info|warn|error or empty)", logLevel)
}
}cli.addPersistentFlags function · go · L171-L201 (31 LOC)internal/cli/root.go
func addPersistentFlags(rootCmd *cobra.Command, cfgFile *string, defaultKube, defaultConfig, defaultMetadata string) {
rootCmd.PersistentFlags().StringVar(cfgFile, "config", defaultConfig, "Path to config file (YAML or JSON)")
rootCmd.PersistentFlags().String("repo_path", "", "Path to the repository")
rootCmd.PersistentFlags().String("env_type", "", "Environment type (e.g. dev, prod)")
rootCmd.PersistentFlags().String("env_region", "", "Environment region")
rootCmd.PersistentFlags().String("env_realm", "", "Environment realm")
rootCmd.PersistentFlags().StringP("category", "c", "", "Category to display")
_ = rootCmd.RegisterFlagCompletionFunc("category", func(_ *cobra.Command, _ []string, _ string) ([]string, cobra.ShellCompDirective) {
return domain.Aliases, cobra.ShellCompDirectiveNoFileComp
})
rootCmd.PersistentFlags().StringP("filter", "f", "", "Initial filter for current category")
rootCmd.PersistentFlags().String("metadata_file", defaultMetadata, "Optional path to a YARepobility — the code-quality scanner for AI-generated software · https://repobility.com
cli.addCompletionCommand function · go · L203-L248 (46 LOC)internal/cli/root.go
func addCompletionCommand(rootCmd *cobra.Command) {
completionCmd := &cobra.Command{
Use: "completion [bash|zsh|fish|powershell]",
Short: "Generate shell completion scripts",
Long: `To load completions:
Bash:
$ source <(toolkit completion bash)
# To load completions for each session, execute once:
# Linux:
$ toolkit completion bash > /etc/bash_completion.d/toolkit
# macOS:
$ toolkit completion bash > /usr/local/etc/bash_completion.d/toolkit
Zsh:
$ echo "autoload -U compinit; compinit" >> ~/.zshrc
$ toolkit completion zsh > "${fpath[1]}/_toolkit"
Fish:
$ toolkit completion fish | source
$ toolkit completion fish > ~/.config/fish/completions/toolkit.fish
PowerShell:
PS> toolkit completion powershell | Out-String | Invoke-Expression
# To load completions for every new session, run:
PS> toolkit completion powershell > $PROFILE
`,
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
ValidArgs: []string{"bash", "zsh", "fish", "powershcli.addVersionCheckCommand function · go · L250-L275 (26 LOC)internal/cli/root.go
func addVersionCheckCommand(rootCmd *cobra.Command, currentVersion string) {
versionCmd := &cobra.Command{
Use: "version",
Short: "Print the version number and check for updates",
RunE: func(cmd *cobra.Command, _ []string) error {
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "toolkit version: %s\n", currentVersion)
check, _ := cmd.Flags().GetBool("check")
if check {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
latest, err := fetchLatestRelease(ctx)
if err != nil {
return fmt.Errorf("failed to check latest version: %w", err)
}
if latest == currentVersion {
_, _ = fmt.Fprintln(cmd.OutOrStdout(), "You are running the latest version.")
} else {
_, _ = fmt.Fprintf(cmd.OutOrStdout(), "A newer version is available: %s\n", latest)
}
}
return nil
},
}
versionCmd.Flags().Bool("check", false, "Check for the latest release on GitHub")
rootCmd.AddCommand(versionCmd)
}cli.addInitCommand function · go · L326-L345 (20 LOC)internal/cli/root.go
func addInitCommand(rootCmd *cobra.Command, defaultConfig, exampleConfig string) {
initCmd := &cobra.Command{
Use: "init",
Short: "Scaffold an example config file",
RunE: func(_ *cobra.Command, _ []string) error {
if _, err := os.Stat(defaultConfig); err == nil {
return fmt.Errorf("config file already exists at %s", defaultConfig)
}
if err := os.MkdirAll(filepath.Dir(defaultConfig), 0o750); err != nil {
return fmt.Errorf("failed to create config directory: %w", err)
}
if err := os.WriteFile(defaultConfig, []byte(exampleConfig), 0o600); err != nil {
return fmt.Errorf("failed to write config file: %w", err)
}
fmt.Printf("Example config written to %s\n", defaultConfig)
return nil
},
}
rootCmd.AddCommand(initCmd)
}cli.Execute function · go · L348-L354 (7 LOC)internal/cli/root.go
func Execute(version string) {
cmd := NewRootCmd(version)
if err := cmd.Execute(); err != nil {
// Let Cobra print the error once; just exit with non-zero status.
os.Exit(1)
}
}cli.runToolkit function · go · L357-L396 (40 LOC)internal/cli/root.go
func runToolkit(ctx context.Context, logger logging.Logger, cfg config.Config, version string) error {
category, _ := domain.ParseCategory(cfg.Category)
env := models.Environment{
Type: cfg.EnvType,
Region: cfg.EnvRegion,
Realm: cfg.EnvRealm,
}
repoPath := cfg.RepoPath
kubeConfig := cfg.KubeConfig
ctx = logging.WithContext(ctx, logger)
logger.Infow("starting toolkit",
"repo", repoPath,
"env", env,
"category", category,
)
model, err := tui.NewModel(
tui.WithRepoPath(repoPath),
tui.WithKubeConfig(kubeConfig),
tui.WithEnvironment(env),
tui.WithCategory(category),
tui.WithLogger(logger),
tui.WithContext(ctx),
tui.WithLoader(production.NewLoader(ctx, cfg.MetadataFile)),
tui.WithFilter(cfg.Filter),
tui.WithVersion(version),
)
if err != nil {
logger.Errorw("failed to create toolkit model", "error", err)
return fmt.Errorf("create toolkit model: %w", err)
}
p := tea.NewProgram(model, tea.WithAltScreen(), tea.WithContext(ctx))
_, err = p.Run()collections.IsMatch function · go · L15-L39 (25 LOC)internal/collections/filter.go
func IsMatch(item models.Filterable, filter string, ignoreCase bool) bool {
if filter == "" {
return true
}
if ignoreCase {
filter = strings.ToLower(filter)
}
for _, value := range item.GetFilterableFields() {
if value == "" {
continue
}
if ignoreCase {
value = strings.ToLower(value)
}
if strings.Contains(value, filter) {
return true
}
}
return false
}config.Config.Validate method · go · L30-L54 (25 LOC)internal/config/config.go
func (c Config) Validate() error {
if c.RepoPath == "" {
return errors.New("config: RepoPath is required")
}
if c.KubeConfig == "" {
return errors.New("config: KubeConfig is required")
}
if c.EnvType == "" {
return errors.New("config: EnvType is required")
}
if c.EnvRegion == "" {
return errors.New("config: EnvRegion is required")
}
if c.EnvRealm == "" {
return errors.New("config: EnvRealm is required")
}
if c.Category == "" {
return errors.New("config: Category is required")
}
_, err := domain.ParseCategory(c.Category)
if err != nil {
return fmt.Errorf("config: invalid category: %w", err)
}
return nil
}configloader.listSubDirs function · go · L35-L50 (16 LOC)internal/configloader/configloader.go
func listSubDirs(dirPath string) ([]string, error) {
var subDirs []string
entries, err := os.ReadDir(dirPath)
if err != nil {
return nil, err
}
for _, entry := range entries {
if entry.IsDir() {
subDirs = append(subDirs, entry.Name())
}
}
return subDirs, nil
}If a scraper extracted this row, it came from Repobility (https://repobility.com)
configloader.getTenants function · go · L129-L184 (56 LOC)internal/configloader/configloader.go
func getTenants(tenantMap map[string]idMap, tenantMeta []models.TenantMetadata) []models.Tenant {
// Build id -> TenantMetadata map for quick lookup
idToMeta := make(map[string]models.TenantMetadata, len(tenantMeta))
consumed := make(map[string]bool, len(tenantMeta))
for _, m := range tenantMeta {
idToMeta[m.ID] = m
}
tenants := make([]models.Tenant, 0, len(tenantMap)+len(tenantMeta))
// First: process tenantMap, merging with metadata if any id matches
for k, v := range tenantMap {
ids := make([]string, 0, len(v))
for id := range v {
ids = append(ids, id)
}
tenantName := k
isInternal := true
note := ""
for _, id := range ids {
if m, ok := idToMeta[id]; ok {
tenantName = merge(tenantName, m.Name)
isInternal = merge(isInternal, m.IsInternal)
note = merge(note, m.Note)
consumed[id] = true
break
}
}
tenant := models.Tenant{
IDs: ids,
Name: tenantName,
IsInternal: isInternal,
Note: note,
}
tenantconfigloader.getEnvironments function · go · L203-L210 (8 LOC)internal/configloader/configloader.go
func getEnvironments(tenancies []models.ServiceTenancy) []models.Environment {
var environments []models.Environment
for _, t := range tenancies {
environments = append(environments, t.Environments()...)
}
return environments
}configloader.isValidEnvironment function · go · L212-L220 (9 LOC)internal/configloader/configloader.go
func isValidEnvironment(env models.Environment, allEnvs []models.Environment) bool {
for _, e := range allEnvs {
if e.Equals(env) {
return true
}
}
return false
}configloader.LoadDataset function · go · L224-L280 (57 LOC)internal/configloader/configloader.go
func LoadDataset(ctx context.Context, repoPath string, env models.Environment, metadata *models.Metadata) (*models.Dataset, error) {
serviceTenancies, err := terraform.LoadServiceTenancies(ctx, repoPath)
if err != nil {
return nil, err
}
environments := getEnvironments(serviceTenancies)
if err := validateEnvironment(env, environments); err != nil {
return nil, err
}
realm := env.Realm
limitGroup, consolePropertyDefinitionGroup, propertyDefinitionGroup, err := loadDefinitionGroups(repoPath)
if err != nil {
return nil, err
}
tenancyOverrideGroup, err := LoadTenancyOverrideGroup(ctx, repoPath, realm, metadata)
if err != nil {
return nil, err
}
limitRegionalOverrides, err := LoadLimitRegionalOverrides(ctx, repoPath, realm)
if err != nil {
return nil, err
}
consolePropertyRegionalOverrides, err := LoadConsolePropertyRegionalOverrides(ctx, repoPath, realm)
if err != nil {
return nil, err
}
propertyRegionalOverrides, err := LoadPropertyRegionalOverrides(ctconfigloader.validateEnvironment function · go · L287-L292 (6 LOC)internal/configloader/configloader.go
func validateEnvironment(env models.Environment, allEnvs []models.Environment) error {
if !isValidEnvironment(env, allEnvs) {
return errors.New("environment is not valid or in the list")
}
return nil
}configloader.loadDefinitionGroups function · go · L296-L322 (27 LOC)internal/configloader/configloader.go
func loadDefinitionGroups(repoPath string) (
*models.LimitDefinitionGroup,
*models.ConsolePropertyDefinitionGroup,
*models.PropertyDefinitionGroup,
error,
) {
limitsRoot := getLimitsRoot(repoPath)
limitDefinitionPath := getConfigPath(limitsRoot, limitsKey+definitionSuffix)
limitGroup, err := jsonutil.LoadFile[models.LimitDefinitionGroup](limitDefinitionPath)
if err != nil {
return nil, nil, nil, err
}
consolePropertyDefinitionPath := getConfigPath(limitsRoot, consolePropertiesKey+definitionSuffix)
consolePropertyDefinitionGroup, err := jsonutil.LoadFile[models.ConsolePropertyDefinitionGroup](consolePropertyDefinitionPath)
if err != nil {
return nil, nil, nil, err
}
propertyDefinitionPath := getConfigPath(limitsRoot, propertiesKey+definitionSuffix)
propertyDefinitionGroup, err := jsonutil.LoadFile[models.PropertyDefinitionGroup](propertyDefinitionPath)
if err != nil {
return nil, nil, nil, err
}
return limitGroup, consolePropertyDefinitionGroup, propertyDefiniconfigloader.LoadTenancyOverrideGroup function · go · L327-L359 (33 LOC)internal/configloader/configloader.go
func LoadTenancyOverrideGroup(ctx context.Context, repoPath, realm string, metadata *models.Metadata) (models.TenancyOverrideGroup, error) {
tenantMap := make(map[string]idMap)
limitsRoot := getLimitsRoot(repoPath)
limitTenancyOverrideMap, err := loadTenancyOverrides[models.LimitTenancyOverride](
ctx, limitsRoot, realm, limitsKey+tenancyOverridesKey)
if err != nil {
return models.TenancyOverrideGroup{}, err
}
updateTenants(tenantMap, limitTenancyOverrideMap)
consolePropertyTenancyOverrideMap, err := loadTenancyOverrides[models.ConsolePropertyTenancyOverride](
ctx, limitsRoot, realm, consolePropertiesKey+tenancyOverridesKey)
if err != nil {
return models.TenancyOverrideGroup{}, err
}
updateTenants(tenantMap, consolePropertyTenancyOverrideMap)
propertyTenancyOverrideMap, err := loadTenancyOverrides[models.PropertyTenancyOverride](
ctx, limitsRoot, realm, propertiesKey+tenancyOverridesKey)
if err != nil {
return models.TenancyOverrideGroup{}, err
}
updateTenanconfigloader.LoadMetadata function · go · L16-L26 (11 LOC)internal/configloader/metadata.go
func LoadMetadata(path string) (*models.Metadata, error) {
ext := strings.ToLower(filepath.Ext(path))
switch ext {
case ".json":
return jsonutil.LoadFile[models.Metadata](path)
case ".yaml", ".yml":
return loadYAML(path, ext)
default:
return nil, fmt.Errorf("unsupported metadata file extension: %s", ext)
}
}Provenance: Repobility (https://repobility.com) — every score reproducible from /scan/
configloader.loadYAML function · go · L28-L39 (12 LOC)internal/configloader/metadata.go
func loadYAML(path, ext string) (*models.Metadata, error) {
allowedExt := map[string]struct{}{ext: {}}
baseDir := filepath.Dir(path)
data, err := fs.SafeReadFile(path, baseDir, allowedExt)
if err != nil {
return nil, fmt.Errorf("failed to read YAML file: %w", err)
}
var out models.Metadata
err = yaml.Unmarshal(data, &out)
return &out, err
}domain.Category.IsScopeOf method · go · L65-L72 (8 LOC)internal/domain/category.go
func (e Category) IsScopeOf(o Category) bool {
if !e.IsScope() {
return false
}
categories := e.ScopedCategories()
return slices.Contains(categories, o)
}domain.Category.IsScope method · go · L75-L81 (7 LOC)internal/domain/category.go
func (e Category) IsScope() bool {
switch e { //nolint:exhaustive
case Tenant, LimitDefinition, ConsolePropertyDefinition, PropertyDefinition, GpuPool:
return true
}
return false
}domain.Category.ScopedCategories method · go · L84-L110 (27 LOC)internal/domain/category.go
func (e Category) ScopedCategories() []Category {
switch e { //nolint:exhaustive
case Tenant:
return []Category{
LimitTenancyOverride,
ConsolePropertyTenancyOverride,
PropertyTenancyOverride,
DedicatedAICluster,
}
case LimitDefinition:
return []Category{LimitTenancyOverride, LimitRegionalOverride}
case ConsolePropertyDefinition:
return []Category{
ConsolePropertyTenancyOverride,
ConsolePropertyRegionalOverride,
}
case PropertyDefinition:
return []Category{
PropertyTenancyOverride,
PropertyRegionalOverride,
}
case GpuPool:
return []Category{GpuNode}
default:
return nil
}
}domain.Category.GetAliases method · go · L115-L124 (10 LOC)internal/domain/category.go
func (e Category) GetAliases() []string {
cat := e.String()
short := GetInitials(cat)
aliases := []string{strings.ToLower(short), strings.ToLower(cat)}
if e == DedicatedAICluster {
aliases = append(aliases, "dac")
}
return aliases
}domain.init function · go · L166-L180 (15 LOC)internal/domain/category.go
func init() {
aliasToCat = make(map[string]Category)
for c := Tenant; c <= Alias; c++ {
for _, a := range c.GetAliases() {
aliasToCat[a] = c
}
Categories = append(Categories, c)
}
Aliases = make([]string, 0, len(aliasToCat))
for k := range aliasToCat {
Aliases = append(Aliases, k)
}
}domain.Category.Definition method · go · L188-L201 (14 LOC)internal/domain/category.go
func (e Category) Definition() Category {
switch e { //nolint:exhaustive
case LimitTenancyOverride, LimitRegionalOverride:
return LimitDefinition
case ConsolePropertyTenancyOverride, ConsolePropertyRegionalOverride:
return ConsolePropertyDefinition
case PropertyTenancyOverride, PropertyRegionalOverride:
return PropertyDefinition
case GpuNode:
return GpuPool
default:
return Category(-1)
}
}domain.ParseCategory function · go · L206-L212 (7 LOC)internal/domain/category.go
func ParseCategory(s string) (Category, error) {
key := strings.ToLower(strings.TrimSpace(s))
if c, ok := aliasToCat[key]; ok {
return c, nil
}
return CategoryUnknown, fmt.Errorf("parse category %q: %w", s, ErrUnknownCategory)
}Generated by Repobility's multi-pass static-analysis pipeline (https://repobility.com)
domain._ function · go · L7-L30 (24 LOC)internal/domain/category_string.go
func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[CategoryUnknown-0]
_ = x[Tenant-1]
_ = x[LimitDefinition-2]
_ = x[ConsolePropertyDefinition-3]
_ = x[PropertyDefinition-4]
_ = x[LimitTenancyOverride-5]
_ = x[ConsolePropertyTenancyOverride-6]
_ = x[PropertyTenancyOverride-7]
_ = x[LimitRegionalOverride-8]
_ = x[ConsolePropertyRegionalOverride-9]
_ = x[PropertyRegionalOverride-10]
_ = x[BaseModel-11]
_ = x[ModelArtifact-12]
_ = x[Environment-13]
_ = x[ServiceTenancy-14]
_ = x[GpuPool-15]
_ = x[GpuNode-16]
_ = x[DedicatedAICluster-17]
_ = x[Alias-18]
}domain.Category.String method · go · L36-L41 (6 LOC)internal/domain/category_string.go
func (i Category) String() string {
if i < 0 || i >= Category(len(_Category_index)-1) {
return "Category(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _Category_name[_Category_index[i]:_Category_index[i+1]]
}fs.ListFiles function · go · L25-L41 (17 LOC)internal/fileutil/dir.go
func ListFiles(ctx context.Context, dirPath, ext string) ([]string, error) {
if err := ctx.Err(); err != nil {
return nil, err
}
var out []string
entries, err := os.ReadDir(dirPath)
if err != nil {
return nil, fmt.Errorf("failed to read directory: %w", err)
}
for _, e := range entries {
if !e.IsDir() && filepath.Ext(e.Name()) == ext {
out = append(out, filepath.Join(dirPath, e.Name()))
}
}
return out, nil
}fs.SafeReadFile function · go · L32-L55 (24 LOC)internal/fileutil/file.go
func SafeReadFile(path string, baseDir string, allowExt map[string]struct{}) ([]byte, error) {
clean := filepath.Clean(path)
absTarget, err := filepath.Abs(clean)
if err != nil {
return nil, fmt.Errorf("failed to open file: %w", err)
}
absBase, err := filepath.Abs(filepath.Clean(baseDir))
if err != nil {
return nil, fmt.Errorf("failed to read file: %w", err)
}
// Ensure absTarget is within absBase
if !strings.HasPrefix(absTarget, absBase+string(os.PathSeparator)) && absTarget != absBase {
return nil, fmt.Errorf("access outside trusted dir %s", absBase)
}
ext := strings.ToLower(filepath.Ext(absTarget))
if _, ok := allowExt[ext]; !ok {
return nil, fmt.Errorf("extension %s not permitted", ext)
}
return os.ReadFile(absTarget) // #nosec G304 -- absTarget validated above
}k8s.LoadBaseModels function · go · L17-L33 (17 LOC)internal/infra/k8s/base_model.go
func LoadBaseModels(ctx context.Context, client dynamic.Interface) ([]models.BaseModel, error) {
gvr := schema.GroupVersionResource{
Group: "ome.io",
Version: "v1beta1",
Resource: "clusterbasemodels",
}
list, err := client.Resource(gvr).List(ctx, v1.ListOptions{})
if err != nil {
return nil, fmt.Errorf("list ClusterBaseModel: %w", err)
}
result := make([]models.BaseModel, 0, len(list.Items))
for _, item := range list.Items {
bm := parseBaseModel(&item)
result = append(result, bm)
}
return result, nil
}k8s.parseBaseModel function · go · L35-L99 (65 LOC)internal/infra/k8s/base_model.go
func parseBaseModel(obj *unstructured.Unstructured) models.BaseModel {
spec, _, _ := unstructured.NestedMap(obj.Object, "spec")
status, _, _ := unstructured.NestedMap(obj.Object, "status")
capabilities, _, _ := unstructured.NestedStringSlice(spec, "modelCapabilities")
metadata, _, _ := unstructured.NestedStringMap(spec, "additionalMetadata")
var dacShapeConfigs *models.DacShapeConfigs
if dac, ok := metadata["dacShapeConfigs"]; ok && dac != "" {
dacShapeConfigs = unmarshalYaml[models.DacShapeConfigs](dac)
}
labels := getLabels(obj)
annotations := getAnnotations(obj)
var runtime string
var runtimeType string
if value, ok := annotations["models.ome.io/runtime"]; ok {
runtime = value
runtimeType = "Serving"
} else if value, ok := annotations["models.ome.io/training-runtime"]; ok {
runtime = value
runtimeType = "Fine-tuning"
}
name := obj.GetName()
var internalName string
if value, ok := metadata["internalName"]; ok {
internalName = value
} else {
internak8s.NewConfig function · go · L17-L35 (19 LOC)internal/infra/k8s/client.go
func NewConfig(kubeconfig, ctx string) (*rest.Config, error) {
loadingRules := &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeconfig}
overrides := &clientcmd.ConfigOverrides{CurrentContext: ctx}
config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
loadingRules, overrides).ClientConfig()
if err != nil {
return nil, fmt.Errorf("failed to load kubeconfig: %w", err)
}
// Apply sensible defaults for client throttling; allow override if already set.
if config.QPS == 0 {
config.QPS = 20
}
if config.Burst == 0 {
config.Burst = 40
}
// Identify this client in user agent.
rest.AddUserAgent(config, "toolkit")
return config, nil
}k8s.NewClientsetFromRestConfig function · go · L41-L50 (10 LOC)internal/infra/k8s/client.go
func NewClientsetFromRestConfig(config *rest.Config) (kubernetes.Interface, error) {
if config == nil {
return nil, errors.New("config is nil")
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
return nil, fmt.Errorf("failed to create k8s client: %w", err)
}
return clientset, nil
}Repobility — the code-quality scanner for AI-generated software · https://repobility.com
k8s.NewClientsetFromKubeConfig function · go · L56-L62 (7 LOC)internal/infra/k8s/client.go
func NewClientsetFromKubeConfig(kubeconfig, ctx string) (kubernetes.Interface, error) {
config, err := NewConfig(kubeconfig, ctx)
if err != nil {
return nil, fmt.Errorf("failed to create config from kubeconfig: %w", err)
}
return NewClientsetFromRestConfig(config)
}k8s.NewDynamicClient function · go · L68-L77 (10 LOC)internal/infra/k8s/client.go
func NewDynamicClient(config *rest.Config) (dynamic.Interface, error) {
if config == nil {
return nil, errors.New("config is nil")
}
dynamicClient, err := dynamic.NewForConfig(config)
if err != nil {
return nil, fmt.Errorf("failed to create dynamic client: %w", err)
}
return dynamicClient, nil
}k8s.NewDynamicClientFromKubeConfig function · go · L83-L89 (7 LOC)internal/infra/k8s/client.go
func NewDynamicClientFromKubeConfig(kubeconfig, ctx string) (dynamic.Interface, error) {
config, err := NewConfig(kubeconfig, ctx)
if err != nil {
return nil, fmt.Errorf("failed to create config from kubeconfig: %w", err)
}
return NewDynamicClient(config)
}k8s.ToggleCordon function · go · L18-L24 (7 LOC)internal/infra/k8s/cordon_drain.go
func ToggleCordon(ctx context.Context, kubeconfig, contextName, nodeName string) (bool, error) {
clientset, err := NewClientsetFromKubeConfig(kubeconfig, contextName)
if err != nil {
return false, err
}
return toggleCordon(ctx, clientset, nodeName)
}k8s.DrainNode function · go · L29-L35 (7 LOC)internal/infra/k8s/cordon_drain.go
func DrainNode(ctx context.Context, kubeconfig, contextName, nodeName string) error {
clientset, err := NewClientsetFromKubeConfig(kubeconfig, contextName)
if err != nil {
return err
}
return drainNode(ctx, clientset, nodeName)
}k8s.toggleCordon function · go · L49-L66 (18 LOC)internal/infra/k8s/cordon_drain.go
func toggleCordon(ctx context.Context, clientset kubernetes.Interface, nodeName string) (bool, error) {
helper := &drain.Helper{
Ctx: ctx,
Client: clientset,
}
// Get the current node
node, err := clientset.CoreV1().Nodes().Get(ctx, nodeName, v1.GetOptions{})
if err != nil {
return false, err
}
// Determine new cordon state (toggle current value)
cordonState := !node.Spec.Unschedulable
// Apply the new state
return cordonState, runCordonOrUncordon(helper, node, cordonState)
}k8s.drainNode function · go · L68-L80 (13 LOC)internal/infra/k8s/cordon_drain.go
func drainNode(ctx context.Context, clientset kubernetes.Interface, nodeName string) error {
logger := logging.FromContext(ctx)
helper := &drain.Helper{
Ctx: ctx,
Client: clientset,
Out: logWriter{logger},
ErrOut: logWriter{logger},
IgnoreAllDaemonSets: true,
DeleteEmptyDirData: true,
GracePeriodSeconds: -1, // Use pod's termination grace period
}
return runNodeDrain(helper, nodeName)
}k8s.listDedicatedAIClusters function · go · L16-L30 (15 LOC)internal/infra/k8s/dac.go
func listDedicatedAIClusters(ctx context.Context, client dynamic.Interface) ([]models.DedicatedAICluster, error) {
cache, err := buildPodCache(ctx, client)
if err != nil {
return nil, err
}
v1Clusters, err := listDedicatedAIClustersV1(ctx, client, cache)
if err != nil {
return nil, err
}
v2Clusters, err := listDedicatedAIClustersV2(ctx, client, cache)
if err != nil {
return nil, err
}
return append(v1Clusters, v2Clusters...), nil
}If a scraper extracted this row, it came from Repobility (https://repobility.com)
k8s.listDedicatedAIClustersGeneric function · go · L33-L48 (16 LOC)internal/infra/k8s/dac.go
func listDedicatedAIClustersGeneric(
ctx context.Context,
client dynamic.Interface,
gvr schema.GroupVersionResource,
extract func(item unstructured.Unstructured) models.DedicatedAICluster,
) ([]models.DedicatedAICluster, error) {
list, err := client.Resource(gvr).List(ctx, v1.ListOptions{})
if err != nil {
return nil, err
}
dacs := make([]models.DedicatedAICluster, 0, len(list.Items))
for _, item := range list.Items {
dacs = append(dacs, extract(item))
}
return dacs, nil
}k8s.listDedicatedAIClustersV1 function · go · L51-L96 (46 LOC)internal/infra/k8s/dac.go
func listDedicatedAIClustersV1(ctx context.Context, client dynamic.Interface, cache PodCache) ([]models.DedicatedAICluster, error) {
gvr := schema.GroupVersionResource{
Group: "ome.oracle.com",
Version: "v1alpha1",
Resource: "dedicatedaiclusters",
}
return listDedicatedAIClustersGeneric(ctx, client, gvr, func(item unstructured.Unstructured) models.DedicatedAICluster {
name, _, _ := unstructured.NestedString(item.Object, "metadata", "name")
spec, _, _ := unstructured.NestedMap(item.Object, "spec")
status, _, _ := unstructured.NestedMap(item.Object, "status")
labels, hasLabels, _ := unstructured.NestedMap(item.Object, "metadata", "labels")
creationTimestampStr, _, _ := unstructured.NestedString(item.Object, "metadata", "creationTimestamp")
var age string
if t, err := time.Parse(time.RFC3339, creationTimestampStr); err == nil {
age = FormatAge(time.Since(t))
}
dacType, _ := spec["type"].(string)
unitShape, _ := spec["unitShape"].(string)
size, _ := sk8s.listDedicatedAIClustersV2 function · go · L99-L144 (46 LOC)internal/infra/k8s/dac.go
func listDedicatedAIClustersV2(ctx context.Context, client dynamic.Interface, cache PodCache) ([]models.DedicatedAICluster, error) {
gvr := schema.GroupVersionResource{
Group: "ome.io",
Version: "v1beta1",
Resource: "dedicatedaiclusters",
}
return listDedicatedAIClustersGeneric(ctx, client, gvr, func(item unstructured.Unstructured) models.DedicatedAICluster {
name, _, _ := unstructured.NestedString(item.Object, "metadata", "name")
spec, _, _ := unstructured.NestedMap(item.Object, "spec")
status, _, _ := unstructured.NestedMap(item.Object, "status")
labels, hasLabels, _ := unstructured.NestedMap(item.Object, "metadata", "labels")
creationTimestampStr, _, _ := unstructured.NestedString(item.Object, "metadata", "creationTimestamp")
var age string
if t, err := time.Parse(time.RFC3339, creationTimestampStr); err == nil {
age = FormatAge(time.Since(t))
}
profile, _ := spec["profile"].(string)
count, _ := spec["count"].(int64)
tenantID := "missing"
ifpage 1 / 6next ›