mirror of
https://github.com/openziti/zrok.git
synced 2025-06-25 04:02:15 +02:00
canary and sdk tweaks for demo setups
This commit is contained in:
parent
8e7ebbe4e6
commit
bb4b4f5485
@ -16,6 +16,8 @@ type LooperOptions struct {
|
||||
MaxDwell time.Duration
|
||||
MinPacing time.Duration
|
||||
MaxPacing time.Duration
|
||||
TargetName string
|
||||
BindAddress string
|
||||
}
|
||||
|
||||
type LooperResults struct {
|
||||
|
@ -19,15 +19,17 @@ import (
|
||||
)
|
||||
|
||||
type PrivateHttpLooper struct {
|
||||
id uint
|
||||
acc *sdk.Access
|
||||
opt *LooperOptions
|
||||
root env_core.Root
|
||||
shr *sdk.Share
|
||||
listener edge.Listener
|
||||
abort bool
|
||||
done chan struct{}
|
||||
results *LooperResults
|
||||
id uint
|
||||
target string
|
||||
bindAddress string
|
||||
acc *sdk.Access
|
||||
opt *LooperOptions
|
||||
root env_core.Root
|
||||
shr *sdk.Share
|
||||
listener edge.Listener
|
||||
abort bool
|
||||
done chan struct{}
|
||||
results *LooperResults
|
||||
}
|
||||
|
||||
func NewPrivateHttpLooper(id uint, opt *LooperOptions, root env_core.Root) *PrivateHttpLooper {
|
||||
@ -74,10 +76,14 @@ func (l *PrivateHttpLooper) Results() *LooperResults {
|
||||
}
|
||||
|
||||
func (l *PrivateHttpLooper) startup() error {
|
||||
target := "canary.PrivateHttpLooper"
|
||||
if l.opt.TargetName != "" {
|
||||
target = l.opt.TargetName
|
||||
}
|
||||
shr, err := sdk.CreateShare(l.root, &sdk.ShareRequest{
|
||||
ShareMode: sdk.PrivateShareMode,
|
||||
BackendMode: sdk.ProxyBackendMode,
|
||||
Target: "canary.PrivateHttpLooper",
|
||||
Target: target,
|
||||
PermissionMode: sdk.ClosedPermissionMode,
|
||||
})
|
||||
if err != nil {
|
||||
@ -85,8 +91,13 @@ func (l *PrivateHttpLooper) startup() error {
|
||||
}
|
||||
l.shr = shr
|
||||
|
||||
bindAddress := ""
|
||||
if l.opt.BindAddress != "" {
|
||||
bindAddress = l.opt.BindAddress
|
||||
}
|
||||
acc, err := sdk.CreateAccess(l.root, &sdk.AccessRequest{
|
||||
ShareToken: shr.Token,
|
||||
ShareToken: shr.Token,
|
||||
BindAddress: bindAddress,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
@ -156,7 +167,7 @@ func (l *PrivateHttpLooper) iterate() {
|
||||
l.results.StartTime = time.Now()
|
||||
defer func() { l.results.StopTime = time.Now() }()
|
||||
|
||||
for i := uint(0); i < l.opt.Iterations; i++ {
|
||||
for i := uint(0); i < l.opt.Iterations && !l.abort; i++ {
|
||||
if i > 0 && i%l.opt.StatusInterval == 0 {
|
||||
logrus.Infof("#%d: iteration %d", l.id, i)
|
||||
}
|
||||
|
@ -30,6 +30,8 @@ type testCanaryPrivateProxy struct {
|
||||
maxDwell time.Duration
|
||||
minPacing time.Duration
|
||||
maxPacing time.Duration
|
||||
targetName string
|
||||
bindAddress string
|
||||
}
|
||||
|
||||
func newTestCanaryPrivateProxy() *testCanaryPrivateProxy {
|
||||
@ -52,6 +54,8 @@ func newTestCanaryPrivateProxy() *testCanaryPrivateProxy {
|
||||
cmd.Flags().DurationVar(&command.maxDwell, "max-dwell", 1*time.Second, "Maximum dwell time")
|
||||
cmd.Flags().DurationVar(&command.minPacing, "min-pacing", 0, "Minimum pacing time")
|
||||
cmd.Flags().DurationVar(&command.maxPacing, "max-pacing", 0, "Maximum pacing time")
|
||||
cmd.Flags().StringVar(&command.targetName, "target-name", "", "Metadata describing the virtual target")
|
||||
cmd.Flags().StringVar(&command.bindAddress, "bind-address", "", "Metadata describing the virtual bind address")
|
||||
return command
|
||||
}
|
||||
|
||||
@ -84,6 +88,8 @@ func (cmd *testCanaryPrivateProxy) run(_ *cobra.Command, _ []string) {
|
||||
MaxDwell: cmd.maxDwell,
|
||||
MinPacing: cmd.minPacing,
|
||||
MaxPacing: cmd.maxPacing,
|
||||
TargetName: cmd.targetName,
|
||||
BindAddress: cmd.bindAddress,
|
||||
}
|
||||
looper := canary.NewPrivateHttpLooper(i, looperOpts, root)
|
||||
loopers = append(loopers, looper)
|
||||
|
@ -81,7 +81,11 @@ func (h *accessHandler) Handle(params share.AccessParams, principal *rest_model_
|
||||
return share.NewAccessInternalServerError()
|
||||
}
|
||||
|
||||
if _, err := str.CreateFrontend(envId, &store.Frontend{PrivateShareId: &shr.Id, Token: feToken, ZId: envZId, PermissionMode: store.ClosedPermissionMode}, trx); err != nil {
|
||||
fe := &store.Frontend{PrivateShareId: &shr.Id, Token: feToken, ZId: envZId, PermissionMode: store.ClosedPermissionMode}
|
||||
if params.Body.BindAddress != "" {
|
||||
fe.BindAddress = ¶ms.Body.BindAddress
|
||||
}
|
||||
if _, err := str.CreateFrontend(envId, fe, trx); err != nil {
|
||||
logrus.Errorf("error creating frontend record for user '%v': %v", principal.Email, err)
|
||||
return share.NewAccessInternalServerError()
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"github.com/openziti/zrok/environment/env_core"
|
||||
"github.com/openziti/zrok/rest_client_zrok/share"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func CreateAccess(root env_core.Root, request *AccessRequest) (*Access, error) {
|
||||
@ -15,6 +16,10 @@ func CreateAccess(root env_core.Root, request *AccessRequest) (*Access, error) {
|
||||
out := share.NewAccessParams()
|
||||
out.Body.ShareToken = request.ShareToken
|
||||
out.Body.EnvZID = root.Environment().ZitiIdentity
|
||||
if request.BindAddress != "" {
|
||||
out.Body.BindAddress = request.BindAddress
|
||||
logrus.Infof("requesting bind address '%v'", out.Body.BindAddress)
|
||||
}
|
||||
|
||||
zrok, err := root.Client()
|
||||
if err != nil {
|
||||
|
@ -50,7 +50,8 @@ type Share struct {
|
||||
}
|
||||
|
||||
type AccessRequest struct {
|
||||
ShareToken string
|
||||
ShareToken string
|
||||
BindAddress string
|
||||
}
|
||||
|
||||
type Access struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user