func NewUUID() types.UID {
	uuidLock.Lock()
	result := uuid.NewUUID()
	go func() {
		time.Sleep(200 * time.Nanosecond)
		uuidLock.Unlock()
	}()
	return types.UID(result.String())
}
The UUID package is naive and can generate identical UUIDs if the time interval is quick enough.
Block subsequent UUIDs for 200 Nanoseconds, the UUID uses 100 ns increments, we block for 200 to be safe
Blocks in a go routine, so that the caller doesn't have to wait.
TODO: save old unused UUIDs so that no one has to block.
package util
import (
	"sync"
	"time"
	"code.google.com/p/go-uuid/uuid"
	"github.com/GoogleCloudPlatform/kubernetes/pkg/types"
)
var uuidLock sync.Mutex