// Code generated by "stringer -type ProvisionerWhen"; DO NOT EDIT.

package configs

import "strconv"

func _() {
	// An "invalid array index" compiler error signifies that the constant values have changed.
	// Re-run the stringer command to generate them again.
	var x [1]struct{}
	_ = x[ProvisionerWhenInvalid-0]
	_ = x[ProvisionerWhenCreate-1]
	_ = x[ProvisionerWhenDestroy-2]
}

const _ProvisionerWhen_name = "ProvisionerWhenInvalidProvisionerWhenCreateProvisionerWhenDestroy"

var _ProvisionerWhen_index = [...]uint8{0, 22, 43, 65}

func (i ProvisionerWhen) String() string {
	if i < 0 || i >= ProvisionerWhen(len(_ProvisionerWhen_index)-1) {
		return "ProvisionerWhen(" + strconv.FormatInt(int64(i), 10) + ")"
	}
	return _ProvisionerWhen_name[_ProvisionerWhen_index[i]:_ProvisionerWhen_index[i+1]]
}
