commands/namespace.go (94 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package commands import ( "errors" "fmt" "github.com/fatih/color" "github.com/spf13/cobra" "github.com/apache/openwhisk-cli/wski18n" "github.com/apache/openwhisk-client-go/whisk" ) // namespaceCmd represents the namespace command var namespaceCmd = &cobra.Command{ Use: "namespace", Short: wski18n.T("work with namespaces"), } var namespaceListCmd = &cobra.Command{ Use: "list", Short: wski18n.T("list available namespaces"), SilenceUsage: true, SilenceErrors: true, PreRunE: SetupClientConfig, RunE: func(cmd *cobra.Command, args []string) error { // add "TYPE" --> public / private if whiskErr := CheckArgs(args, 0, 0, "Namespace list", wski18n.T("No arguments are required.")); whiskErr != nil { return whiskErr } namespaces, _, err := Client.Namespaces.List() if err != nil { whisk.Debug(whisk.DbgError, "Client.Namespaces.List() error: %s\n", err) errStr := wski18n.T("Unable to obtain the list of available namespaces: {{.err}}", map[string]interface{}{"err": err}) werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_NETWORK, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE) return werr } printList(namespaces, false) // `-n` flag applies to `namespace get`, not list, so must pass value false for printList here return nil }, } var namespaceGetCmd = &cobra.Command{ Use: "get", Short: wski18n.T("get triggers, actions, and rules in the registry for namespace"), SilenceUsage: true, SilenceErrors: true, PreRunE: SetupClientConfig, RunE: func(cmd *cobra.Command, args []string) error { var err error var namespace string = getClientNamespace() if !(len(args) == 1 && args[0] == "/_") { if whiskErr := CheckArgs(args, 0, 0, "Namespace get", wski18n.T("No arguments are required.")); whiskErr != nil { return whiskErr } } actions, _, err := Client.Actions.List("", &whisk.ActionListOptions{Skip: 0, Limit: 0}) if err != nil { return entityListError(err, namespace, "Actions") } packages, _, err := Client.Packages.List(&whisk.PackageListOptions{Skip: 0, Limit: 0}) if err != nil { return entityListError(err, namespace, "Packages") } triggers, _, err := Client.Triggers.List(&whisk.TriggerListOptions{Skip: 0, Limit: 0}) if err != nil { return entityListError(err, namespace, "Triggers") } rules, _, err := Client.Rules.List(&whisk.RuleListOptions{Skip: 0, Limit: 0}) if err != nil { return entityListError(err, namespace, "Rules") } //No errors, lets attempt to retrieve the status of each rule for index, rule := range rules { ruleStatus, _, err := Client.Rules.Get(rule.Name) if err != nil { errStr := wski18n.T("Unable to get status of rule '{{.name}}': {{.err}}", map[string]interface{}{"name": rule.Name, "err": err}) fmt.Println(errStr) werr := whisk.MakeWskErrorFromWskError(errors.New(errStr), err, whisk.EXIT_CODE_ERR_GENERAL, whisk.DISPLAY_MSG, whisk.NO_DISPLAY_USAGE) return werr } rules[index].Status = ruleStatus.Status } fmt.Fprintf(color.Output, wski18n.T("Entities in namespace: {{.namespace}}\n", map[string]interface{}{"namespace": boldString(getClientNamespace())})) sortByName := Flags.common.nameSort printList(packages, sortByName) printList(actions, sortByName) printList(triggers, sortByName) printList(rules, sortByName) return nil }, } func init() { namespaceGetCmd.Flags().BoolVarP(&Flags.common.nameSort, "name-sort", "n", false, wski18n.T("sorts a list alphabetically by entity name; only applicable within the limit/skip returned entity block")) namespaceCmd.AddCommand( namespaceListCmd, namespaceGetCmd, ) }