Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 17 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -187,21 +187,23 @@ install: build ## Build and install the kubectl plugin to ~/.local/bin (no sudo
else \
echo " ├─ ⚠️ Could not find DataProtectionApplication resources"; \
fi; \
echo ""; \
echo " ⚠️ ⚠️ ⚠️"; \
echo " ├─ ❌ OADP Operator is not detected in the cluster"; \
echo " ├─ Fallback will check for Velero deployment as fallback"; \
echo " ├─ Consider using the velero cli instead"; \
echo " ⚠️ ⚠️ ⚠️"; \
echo ""; \
echo " 🔍 Looking for Velero deployment as fallback..."; \
DETECTED_NS=$$(kubectl get deployments --all-namespaces -o jsonpath='{.items[?(@.metadata.name=="velero")].metadata.namespace}' 2>/dev/null | head -1); \
if [[ -n "$$DETECTED_NS" ]]; then \
echo " ├─ ✅ Found Velero deployment in namespace: $$DETECTED_NS"; \
NAMESPACE=$$DETECTED_NS; \
DETECTED=true; \
else \
echo " └─ ⚠️ Could not detect OADP or Velero deployment in cluster"; \
if [[ "$$DETECTED" == "false" ]]; then \
echo ""; \
echo " ⚠️ ⚠️ ⚠️"; \
echo " ├─ ❌ OADP Operator is not detected in the cluster"; \
echo " ├─ Fallback will check for Velero deployment as fallback"; \
echo " ├─ Consider using the velero cli instead"; \
echo " ⚠️ ⚠️ ⚠️"; \
echo ""; \
echo " 🔍 Looking for Velero deployment as fallback..."; \
DETECTED_NS=$$(kubectl get deployments --all-namespaces -o jsonpath='{.items[?(@.metadata.name=="velero")].metadata.namespace}' 2>/dev/null | head -1); \
if [[ -n "$$DETECTED_NS" ]]; then \
echo " ├─ ✅ Found Velero deployment in namespace: $$DETECTED_NS"; \
NAMESPACE=$$DETECTED_NS; \
DETECTED=true; \
else \
echo " └─ ⚠️ Could not detect OADP or Velero deployment in cluster"; \
fi; \
fi; \
if [[ "$$DETECTED" == "false" ]]; then \
echo " 🤔 Which namespace should admin commands use for Velero resources?"; \
Expand Down
113 changes: 0 additions & 113 deletions cmd/non-admin/bsl/bsl_test.go

This file was deleted.

57 changes: 32 additions & 25 deletions cmd/non-admin/verbs/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func (vb *NonAdminVerbBuilder) BuildVerbCommand(config NonAdminVerbConfig) *cobr
Example: config.Example,
}

vb.addFlagsFromResources(verbCmd)
vb.addFlagsFromResources(verbCmd, config.Use)

return verbCmd
}
Expand Down Expand Up @@ -112,17 +112,26 @@ func (vb *NonAdminVerbBuilder) runEFunc(verb string) func(cmd *cobra.Command, ar

// addFlagsToArgs adds flags from the verb command to the remaining args
func (vb *NonAdminVerbBuilder) addFlagsToArgs(cmd *cobra.Command, remainingArgs []string) []string {
cmd.Flags().VisitAll(func(flag *pflag.Flag) {
if flag.Changed {
if flag.Value.Type() == "string" {
remainingArgs = append(remainingArgs, "--"+flag.Name, flag.Value.String())
} else if flag.Value.Type() == "bool" {
if flag.Value.String() == "true" {
remainingArgs = append(remainingArgs, "--"+flag.Name)
}
} else if flag.Value.Type() == "stringArray" {
// Handle string array flags
remainingArgs = append(remainingArgs, "--"+flag.Name, flag.Value.String())
// Use Visit instead of VisitAll to only process flags that were actually set
cmd.Flags().Visit(func(flag *pflag.Flag) {
flagValue := flag.Value.String()
flagType := flag.Value.Type()

switch flagType {
case "string", "map":
remainingArgs = append(remainingArgs, "--"+flag.Name, flagValue)
case "bool":
if flagValue == "true" {
remainingArgs = append(remainingArgs, "--"+flag.Name)
}
case "stringArray", "stringSlice":
// Handle string array/slice flags
remainingArgs = append(remainingArgs, "--"+flag.Name, flagValue)
default:
// For any other flag types, try to add them as string values
// This handles custom types that implement pflag.Value
if flagValue != "" {
remainingArgs = append(remainingArgs, "--"+flag.Name, flagValue)
}
}
})
Expand Down Expand Up @@ -151,7 +160,7 @@ func (vb *NonAdminVerbBuilder) createCommandInstance(originalCmd *cobra.Command)
}

// addFlagsFromResources adds flags from all registered resources to the verb command
func (vb *NonAdminVerbBuilder) addFlagsFromResources(verbCmd *cobra.Command) {
func (vb *NonAdminVerbBuilder) addFlagsFromResources(verbCmd *cobra.Command, verb string) {
addedFlags := make(map[string]bool)

for _, handler := range vb.resourceRegistry {
Expand All @@ -160,18 +169,16 @@ func (vb *NonAdminVerbBuilder) addFlagsFromResources(verbCmd *cobra.Command) {
continue
}

// Add flags from the specific verb subcommand (e.g., "backup get" flags to "get" command)
// This ensures flags like -o are recognized at the verb level
for range []string{"get", "create", "delete", "describe", "logs"} { // Iterate over all possible verbs
subCmd := handler.GetSubCommandFunc(resourceCmd)
if subCmd != nil {
subCmd.Flags().VisitAll(func(flag *pflag.Flag) {
if !addedFlags[flag.Name] {
verbCmd.Flags().AddFlag(flag)
addedFlags[flag.Name] = true
}
})
}
// Add flags from the specific verb subcommand (e.g., "backup create" flags to "create" command)
// This ensures flags are recognized at the verb level
subCmd := handler.GetSubCommandFunc(resourceCmd)
if subCmd != nil {
subCmd.Flags().VisitAll(func(flag *pflag.Flag) {
if !addedFlags[flag.Name] {
verbCmd.Flags().AddFlag(flag)
addedFlags[flag.Name] = true
}
})
}
}
}
Loading
Loading