clientv3util

package
v3.3.27+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 15, 2021 License: Apache-2.0 Imports: 1 Imported by: 19

Documentation

Overview

Package clientv3util contains utility functions derived from clientv3.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func KeyExists

func KeyExists(key string) clientv3.Cmp

KeyExists returns a comparison operation that evaluates to true iff the given key exists. It does this by checking if the key `Version` is greater than 0. It is a useful guard in transaction delete operations.

Example (Delete)
package main

import (
	"context"
	"log"

	"github.com/coreos/etcd/clientv3"
	"github.com/coreos/etcd/clientv3/clientv3util"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints: []string{"127.0.0.1:2379"},
	})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()
	kvc := clientv3.NewKV(cli)

	// perform a delete only if key already exists
	_, err = kvc.Txn(context.Background()).
		If(clientv3util.KeyExists("purpleidea")).
		Then(clientv3.OpDelete("purpleidea")).
		Commit()
	if err != nil {
		log.Fatal(err)
	}
}
Output:

Example (Put)
package main

import (
	"context"
	"log"

	"github.com/coreos/etcd/clientv3"
	"github.com/coreos/etcd/clientv3/clientv3util"
)

func main() {
	cli, err := clientv3.New(clientv3.Config{
		Endpoints: []string{"127.0.0.1:2379"},
	})
	if err != nil {
		log.Fatal(err)
	}
	defer cli.Close()
	kvc := clientv3.NewKV(cli)

	// perform a put only if key is missing
	// It is useful to do the check atomically to avoid overwriting
	// the existing key which would generate potentially unwanted events,
	// unless of course you wanted to do an overwrite no matter what.
	_, err = kvc.Txn(context.Background()).
		If(clientv3util.KeyMissing("purpleidea")).
		Then(clientv3.OpPut("purpleidea", "hello world")).
		Commit()
	if err != nil {
		log.Fatal(err)
	}
}
Output:

func KeyMissing

func KeyMissing(key string) clientv3.Cmp

KeyMissing returns a comparison operation that evaluates to true iff the given key does not exist.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL