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.

Source Files