Skip to content

Commit

Permalink
Merge pull request #21 from humio/mike/add_ingesttoken_update
Browse files Browse the repository at this point in the history
Add an update command for ingest tokens
  • Loading branch information
SaaldjorMike authored Apr 7, 2020
2 parents 89e6d4e + 14fd163 commit 1639210
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 12 deletions.
42 changes: 30 additions & 12 deletions api/ingest-tokens.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,21 +79,39 @@ func toIngestToken(data ingestTokenData) *IngestToken {
}
}

func (i *IngestTokens) Add(repo string, name string, parserName string) (*IngestToken, error) {
func (i *IngestTokens) Add(repositoryName string, tokenName string, parserName string) (*IngestToken, error) {
var mutation struct {
Result struct {
IngestToken ingestTokenData
} `graphql:"addIngestToken(repositoryName: $repositoryName, name: $name, parser: $parser)"`
} `graphql:"addIngestToken(repositoryName: $repositoryName, name: $tokenName, parser: $parserName)"`
}

var parserNameVar graphql.String
if parserName != "" {
parserNameVar = graphql.String(parserName)
variables := map[string]interface{}{
"tokenName": graphql.String(tokenName),
"repositoryName": graphql.String(repositoryName),
"parserName": graphql.String(parserName),
}

err := i.client.Mutate(&mutation, variables)

if err != nil {
return nil, err
}

return toIngestToken(mutation.Result.IngestToken), err
}

func (i *IngestTokens) Update(repositoryName string, tokenName string, parserName string) (*IngestToken, error) {
var mutation struct {
Result struct {
IngestToken ingestTokenData
} `graphql:"assignIngestToken(repositoryName: $repositoryName, tokenName: $tokenName, parserName: $parserName)"`
}

variables := map[string]interface{}{
"name": graphql.String(name),
"repositoryName": graphql.String(repo),
"parser": parserNameVar,
"tokenName": graphql.String(tokenName),
"repositoryName": graphql.String(repositoryName),
"parserName": graphql.String(parserName),
}

err := i.client.Mutate(&mutation, variables)
Expand All @@ -105,16 +123,16 @@ func (i *IngestTokens) Add(repo string, name string, parserName string) (*Ingest
return toIngestToken(mutation.Result.IngestToken), err
}

func (i *IngestTokens) Remove(repo string, tokenName string) error {
func (i *IngestTokens) Remove(repositoryName string, tokenName string) error {
var mutation struct {
Result struct {
Type string `graphql:"__typename"`
} `graphql:"removeIngestToken(repositoryName: $repositoryName, name: $name)"`
} `graphql:"removeIngestToken(repositoryName: $repositoryName, name: $tokenName)"`
}

variables := map[string]interface{}{
"name": graphql.String(tokenName),
"repositoryName": graphql.String(repo),
"tokenName": graphql.String(tokenName),
"repositoryName": graphql.String(repositoryName),
}

return i.client.Mutate(&mutation, variables)
Expand Down
1 change: 1 addition & 0 deletions cmd/ingest_tokens.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ without having to change anything on sender/client.`,
}

cmd.AddCommand(newIngestTokensAddCmd())
cmd.AddCommand(newIngestTokensUpdateCmd())
cmd.AddCommand(newIngestTokensRemoveCmd())
cmd.AddCommand(newIngestTokensListCmd())
cmd.AddCommand(newIngestTokensShowCmd())
Expand Down
68 changes: 68 additions & 0 deletions cmd/ingest_tokens_update.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// Copyright © 2020 Humio Ltd.
//
// Licensed 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 cmd

import (
"fmt"

"github.com/ryanuber/columnize"
"github.com/spf13/cobra"
)

func newIngestTokensUpdateCmd() *cobra.Command {
var parserName string

cmd := &cobra.Command{
Use: "update [flags] <repository-name> <token-name>",
Short: "Update an ingest token to a repository.",
Long: `Updates the parser of an ingest token with name <token name> in repository <repo>.
You can associate a parser with the ingest token using the --parser flag.
Assigning a parser will make all data sent to Humio using this ingest token
use the assigned parser at ingest time.
If parser is not specified, the ingest token will not be associated with a parser.`,
Args: cobra.ExactArgs(2),
RunE: func(cmd *cobra.Command, args []string) error {
repositoryName := args[0]
tokenName := args[1]

// Get the HTTP client
client := NewApiClient(cmd)

token, err := client.IngestTokens().Update(repositoryName, tokenName, parserName)

if err != nil {
return fmt.Errorf("Error updating ingest token: %s", err)
}

var output []string
output = append(output, "Name | Token | Assigned Parser")
output = append(output, fmt.Sprintf("%v | %v | %v", token.Name, token.Token, valueOrEmpty(token.AssignedParser)))

table := columnize.SimpleFormat(output)

cmd.Println()
cmd.Println(table)
cmd.Println()

return nil
},
}

cmd.Flags().StringVarP(&parserName, "parser", "p", "", "Assigns the a parser to the ingest token.")

return cmd
}

0 comments on commit 1639210

Please sign in to comment.