const ( // The heketi server must be running on the host heketiUrl = "http://127.0.0.1:8080" // VMs DISKS = 10 NODES = 3 ZONES = 3 CLUSTERS = 1 ) var ( // Heketi client heketi = client.NewClient(heketiUrl, "admin", "adminkey") logger = utils.NewLogger("[test]", utils.LEVEL_DEBUG) ) func getdisks() []string { diskletters := make([]string, DISKS) for index, i := 0, []byte("b")[0]; index < DISKS; index, i = index+1, i+1 { diskletters[index] = "/dev/vd" + string(i) } return diskletters } func getnodes() []string { nodelist := make([]string, NODES)
config *SshConfig port string } type SshConfig struct { PrivateKeyFile string `json:"keyfile"` User string `json:"user"` Port string `json:"port"` Fstab string `json:"fstab"` // Experimental Settings RebalanceOnExpansion bool `json:"rebalance_on_expansion"` } var ( logger = utils.NewLogger("[sshexec]", utils.LEVEL_DEBUG) ErrSshPrivateKey = errors.New("Unable to read private key file") sshNew = func(logger *utils.Logger, user string, file string) (Ssher, error) { s := ssh.NewSshExecWithKeyFile(logger, user, file) if s == nil { return nil, ErrSshPrivateKey } return s, nil } ) func NewSshExecutor(config *SshConfig) (*SshExecutor, error) { godbc.Require(config != nil) s := &SshExecutor{} s.RemoteExecutor = s
// Use POD name instead of using label // to access POD UsePodNames bool `json:"use_pod_names"` } type KubeExecutor struct { // Embed all sshexecutor functions sshexec.SshExecutor // save kube configuration config *KubeConfig } var ( logger = utils.NewLogger("[kubeexec]", utils.LEVEL_DEBUG) tokenCreator = tokencmd.RequestToken ) func setWithEnvVariables(config *KubeConfig) { // Check Host e.g. "https://myhost:8443" env := os.Getenv("HEKETI_KUBE_APIHOST") if "" != env { config.Host = env } // Check certificate file env = os.Getenv("HEKETI_KUBE_CERTFILE") if "" != env { config.CertFile = env }
"github.com/heketi/heketi/executors/sshexec" "github.com/heketi/heketi/pkg/utils" "github.com/heketi/rest" ) const ( ASYNC_ROUTE = "/queue" BOLTDB_BUCKET_CLUSTER = "CLUSTER" BOLTDB_BUCKET_NODE = "NODE" BOLTDB_BUCKET_VOLUME = "VOLUME" BOLTDB_BUCKET_DEVICE = "DEVICE" BOLTDB_BUCKET_BRICK = "BRICK" ) var ( logger = utils.NewLogger("[heketi]", utils.LEVEL_INFO) dbfilename = "heketi.db" ) type App struct { asyncManager *rest.AsyncHttpManager db *bolt.DB executor executors.Executor allocator Allocator conf *GlusterFSConfig // For testing only. Keep access to the object // not through the interface xo *mockexec.MockExecutor }