mirror of
https://github.com/openziti/zrok.git
synced 2025-06-25 12:12:32 +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
|
MaxDwell time.Duration
|
||||||
MinPacing time.Duration
|
MinPacing time.Duration
|
||||||
MaxPacing time.Duration
|
MaxPacing time.Duration
|
||||||
|
TargetName string
|
||||||
|
BindAddress string
|
||||||
}
|
}
|
||||||
|
|
||||||
type LooperResults struct {
|
type LooperResults struct {
|
||||||
|
@ -19,15 +19,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type PrivateHttpLooper struct {
|
type PrivateHttpLooper struct {
|
||||||
id uint
|
id uint
|
||||||
acc *sdk.Access
|
target string
|
||||||
opt *LooperOptions
|
bindAddress string
|
||||||
root env_core.Root
|
acc *sdk.Access
|
||||||
shr *sdk.Share
|
opt *LooperOptions
|
||||||
listener edge.Listener
|
root env_core.Root
|
||||||
abort bool
|
shr *sdk.Share
|
||||||
done chan struct{}
|
listener edge.Listener
|
||||||
results *LooperResults
|
abort bool
|
||||||
|
done chan struct{}
|
||||||
|
results *LooperResults
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPrivateHttpLooper(id uint, opt *LooperOptions, root env_core.Root) *PrivateHttpLooper {
|
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 {
|
func (l *PrivateHttpLooper) startup() error {
|
||||||
|
target := "canary.PrivateHttpLooper"
|
||||||
|
if l.opt.TargetName != "" {
|
||||||
|
target = l.opt.TargetName
|
||||||
|
}
|
||||||
shr, err := sdk.CreateShare(l.root, &sdk.ShareRequest{
|
shr, err := sdk.CreateShare(l.root, &sdk.ShareRequest{
|
||||||
ShareMode: sdk.PrivateShareMode,
|
ShareMode: sdk.PrivateShareMode,
|
||||||
BackendMode: sdk.ProxyBackendMode,
|
BackendMode: sdk.ProxyBackendMode,
|
||||||
Target: "canary.PrivateHttpLooper",
|
Target: target,
|
||||||
PermissionMode: sdk.ClosedPermissionMode,
|
PermissionMode: sdk.ClosedPermissionMode,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -85,8 +91,13 @@ func (l *PrivateHttpLooper) startup() error {
|
|||||||
}
|
}
|
||||||
l.shr = shr
|
l.shr = shr
|
||||||
|
|
||||||
|
bindAddress := ""
|
||||||
|
if l.opt.BindAddress != "" {
|
||||||
|
bindAddress = l.opt.BindAddress
|
||||||
|
}
|
||||||
acc, err := sdk.CreateAccess(l.root, &sdk.AccessRequest{
|
acc, err := sdk.CreateAccess(l.root, &sdk.AccessRequest{
|
||||||
ShareToken: shr.Token,
|
ShareToken: shr.Token,
|
||||||
|
BindAddress: bindAddress,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -156,7 +167,7 @@ func (l *PrivateHttpLooper) iterate() {
|
|||||||
l.results.StartTime = time.Now()
|
l.results.StartTime = time.Now()
|
||||||
defer func() { l.results.StopTime = 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 {
|
if i > 0 && i%l.opt.StatusInterval == 0 {
|
||||||
logrus.Infof("#%d: iteration %d", l.id, i)
|
logrus.Infof("#%d: iteration %d", l.id, i)
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,8 @@ type testCanaryPrivateProxy struct {
|
|||||||
maxDwell time.Duration
|
maxDwell time.Duration
|
||||||
minPacing time.Duration
|
minPacing time.Duration
|
||||||
maxPacing time.Duration
|
maxPacing time.Duration
|
||||||
|
targetName string
|
||||||
|
bindAddress string
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTestCanaryPrivateProxy() *testCanaryPrivateProxy {
|
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.maxDwell, "max-dwell", 1*time.Second, "Maximum dwell time")
|
||||||
cmd.Flags().DurationVar(&command.minPacing, "min-pacing", 0, "Minimum pacing 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().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
|
return command
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,6 +88,8 @@ func (cmd *testCanaryPrivateProxy) run(_ *cobra.Command, _ []string) {
|
|||||||
MaxDwell: cmd.maxDwell,
|
MaxDwell: cmd.maxDwell,
|
||||||
MinPacing: cmd.minPacing,
|
MinPacing: cmd.minPacing,
|
||||||
MaxPacing: cmd.maxPacing,
|
MaxPacing: cmd.maxPacing,
|
||||||
|
TargetName: cmd.targetName,
|
||||||
|
BindAddress: cmd.bindAddress,
|
||||||
}
|
}
|
||||||
looper := canary.NewPrivateHttpLooper(i, looperOpts, root)
|
looper := canary.NewPrivateHttpLooper(i, looperOpts, root)
|
||||||
loopers = append(loopers, looper)
|
loopers = append(loopers, looper)
|
||||||
|
@ -81,7 +81,11 @@ func (h *accessHandler) Handle(params share.AccessParams, principal *rest_model_
|
|||||||
return share.NewAccessInternalServerError()
|
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)
|
logrus.Errorf("error creating frontend record for user '%v': %v", principal.Email, err)
|
||||||
return share.NewAccessInternalServerError()
|
return share.NewAccessInternalServerError()
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"github.com/openziti/zrok/environment/env_core"
|
"github.com/openziti/zrok/environment/env_core"
|
||||||
"github.com/openziti/zrok/rest_client_zrok/share"
|
"github.com/openziti/zrok/rest_client_zrok/share"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateAccess(root env_core.Root, request *AccessRequest) (*Access, error) {
|
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 := share.NewAccessParams()
|
||||||
out.Body.ShareToken = request.ShareToken
|
out.Body.ShareToken = request.ShareToken
|
||||||
out.Body.EnvZID = root.Environment().ZitiIdentity
|
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()
|
zrok, err := root.Client()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -50,7 +50,8 @@ type Share struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type AccessRequest struct {
|
type AccessRequest struct {
|
||||||
ShareToken string
|
ShareToken string
|
||||||
|
BindAddress string
|
||||||
}
|
}
|
||||||
|
|
||||||
type Access struct {
|
type Access struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user