You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: block_volume.go
    path of file: ./repos/heketi/client/cli/go/cmds
    
    the code of the file until where you have to start completion: //
// Copyright (c) 2017 The heketi Authors
//
// This file is licensed to you under your choice of the GNU Lesser
// General Public License, version 3 or any later version (LGPLv3 or
// later), or the GNU General Public License, version 2 (GPLv2), in all
// cases as published by the Free Software Foundation.
//

package cmds

import (
	"encoding/json"
	"errors"
	"fmt"
	"strings"

	"github.com/heketi/heketi/v10/pkg/glusterfs/api"
	"github.com/spf13/cobra"
)

var (
	bv_size     int
	bv_volname  string
	bv_auth     bool
	bv_clusters string
	bv_ha       int

	bvNewSize int
	bvId      string
)

func init() {
	RootCmd.AddCommand(blockVolumeCommand)
	blockVolumeCommand.AddCommand(blockVolumeCreateCommand)
	blockVolumeCommand.AddCommand(blockVolumeDeleteCommand)
	blockVolumeCommand.AddCommand(blockVolumeInfoCommand)
	blockVolumeCommand.AddCommand(blockVolumeListCommand)
	blockVolumeCommand.AddCommand(blockVolumeExpandCommand)

	blockVolumeCreateCommand.Flags().IntVar(&bv_size, "size", 0,
		"\n\tSize of volume in GiB")
	blockVolumeCreateCommand.Flags().IntVar(&bv_ha, "ha", 0,
		"\n\tHA count for block volume")
	blockVolumeCreateCommand.Flags().BoolVar(&bv_auth, "auth", false,
		"\n\tOptional: Enable Authentication for block volume access")
	blockVolumeCreateCommand.Flags().StringVar(&bv_volname, "name", "",
		"\n\tOptional: Name of volume. Only set if really necessary")
	blockVolumeCreateCommand.Flags().StringVar(&bv_clusters, "clusters", "",
		"\n\tOptional: Comma s
    
func init() {
	RootCmd.AddCommand(blockVolumeCommand)
	blockVolumeCommand.AddCommand(blockVolumeCreateCommand)
	blockVolumeCommand.AddCommand(blockVolumeDeleteCommand)
	blockVolumeCommand.AddCommand(blockVolumeInfoCommand)
	blockVolumeCommand.AddCommand(blockVolumeListCommand)
	blockVolumeCommand.AddCommand(blockVolumeExpandCommand)

	blockVolumeCreateCommand.Flags().IntVar(&bv_size, "size", 0,
		"\n\tSize of volume in GiB")
	blockVolumeCreateCommand.Flags().IntVar(&bv_ha, "ha", 0,
		"\n\tHA count for block volume")
	blockVolumeCreateCommand.Flags().BoolVar(&bv_auth, "auth", false,
		"\n\tOptional: Enable Authentication for block volume access")
	blockVolumeCreateCommand.Flags().StringVar(&bv_volname, "name", "",
		"\n\tOptional: Name of volume. Only set if really necessary")
	blockVolumeCreateCommand.Flags().StringVar(&bv_clusters, "clusters", "",
		"\n\tOptional: Comma separated list of cluster ids where this volume"+
			"\n\tmust be allocated. If omitted, Heketi will allocate the volume"+
			"\n\ton any of the configured clusters which have the available space."+
			"\n\tProviding a set of clusters will ensure Heketi allocates storage"+
			"\n\tfor this volume only in the clusters specified.")
	blockVolumeExpandCommand.Flags().IntVar(&bvNewSize, "new-size", 0,
		"\n\tNet new size of block volume in GiB")
	blockVolumeExpandCommand.Flags().StringVar(&bvId, "blockvolume", "",
		"\n\tId of block volume to expand")
	blockVolumeCreateCommand.SilenceUsage = true
	blockVolumeDeleteCommand.SilenceUsage = true
	blockVolumeInfoCommand.SilenceUsage = true
	blockVolumeListCommand.SilenceUsage = true
	blockVolumeExpandCommand.SilenceUsage = true
}