From 05cdc494e7f371678214e43bd014952d8934575f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 15 Jul 2019 12:58:46 +0300 Subject: [PATCH] Updated parseFlags for agents --- agents/asterisk_event.go | 91 +--------------------------- agents/fsevent.go | 91 +--------------------------- agents/kamevent.go | 128 ++------------------------------------- config/config.go | 1 + sessions/sessions.go | 120 ++++++++++++++++++++++++++++++++++++ 5 files changed, 131 insertions(+), 300 deletions(-) diff --git a/agents/asterisk_event.go b/agents/asterisk_event.go index ba145bcf1..d433c4237 100644 --- a/agents/asterisk_event.go +++ b/agents/asterisk_event.go @@ -285,42 +285,7 @@ func (smaEv *SMAsteriskEvent) V1AuthorizeArgs() (args *sessions.V1AuthorizeArgs) utils.AsteriskAgent)) return } - for _, subsystem := range strings.Split(smaEv.Subsystems(), utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.GetMaxUsage = true - case subsystem == utils.MetaResources: - args.AuthorizeResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, true) - args.ArgDispatcher = cgrArgs.ArgDispatcher - args.Paginator = *cgrArgs.SupplierPaginator - case subsystem == utils.MetaSuppliers: - args.GetSuppliers = true - case subsystem == utils.MetaSuppliersIgnoreErrors: - args.SuppliersIgnoreErrors = true - case subsystem == utils.MetaSuppliersEventCost: - args.SuppliersMaxCost = utils.MetaEventCost - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(smaEv.Subsystems()) return } @@ -335,35 +300,7 @@ func (smaEv *SMAsteriskEvent) V1InitSessionArgs(cgrEvDisp utils.CGREventWithArgD utils.AsteriskAgent, utils.ToJSON(cgrEvDisp.CGREvent), utils.CGRFlags)) return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.InitSession = true - case subsystem == utils.MetaResources: - args.AllocateResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEvDisp.ConsumeArgs(true, false) - args.ArgDispatcher = cgrArgs.ArgDispatcher - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } @@ -378,28 +315,6 @@ func (smaEv *SMAsteriskEvent) V1TerminateSessionArgs(cgrEvDisp utils.CGREventWit utils.AsteriskAgent, utils.ToJSON(cgrEvDisp.CGREvent), utils.CGRFlags)) return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.TerminateSession = true - case subsystem == utils.MetaResources: - args.ReleaseResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEvDisp.ConsumeArgs(true, false) - args.ArgDispatcher = cgrArgs.ArgDispatcher - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } diff --git a/agents/fsevent.go b/agents/fsevent.go index 30e779847..947a03515 100644 --- a/agents/fsevent.go +++ b/agents/fsevent.go @@ -419,42 +419,7 @@ func (fsev FSEvent) V1AuthorizeArgs() (args *sessions.V1AuthorizeArgs) { if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.GetMaxUsage = true - case subsystem == utils.MetaResources: - args.AuthorizeResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, true) - args.ArgDispatcher = cgrArgs.ArgDispatcher - args.Paginator = *cgrArgs.SupplierPaginator - case subsystem == utils.MetaSuppliers: - args.GetSuppliers = true - case subsystem == utils.MetaSuppliersIgnoreErrors: - args.SuppliersIgnoreErrors = true - case subsystem == utils.MetaSuppliersEventCost: - args.SuppliersMaxCost = utils.MetaEventCost - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } @@ -472,35 +437,7 @@ func (fsev FSEvent) V1InitSessionArgs() (args *sessions.V1InitSessionArgs) { if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.InitSession = true - case subsystem == utils.MetaResources: - args.AllocateResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, false) - args.ArgDispatcher = cgrArgs.ArgDispatcher - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } @@ -518,29 +455,7 @@ func (fsev FSEvent) V1TerminateSessionArgs() (args *sessions.V1TerminateSessionA if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.TerminateSession = true - case subsystem == utils.MetaResources: - args.ReleaseResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, false) - args.ArgDispatcher = cgrArgs.ArgDispatcher - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } diff --git a/agents/kamevent.go b/agents/kamevent.go index d048e6f09..9255dc66e 100644 --- a/agents/kamevent.go +++ b/agents/kamevent.go @@ -212,42 +212,7 @@ func (kev KamEvent) V1AuthorizeArgs() (args *sessions.V1AuthorizeArgs) { if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.GetMaxUsage = true - case subsystem == utils.MetaResources: - args.AuthorizeResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, true) - args.ArgDispatcher = cgrArgs.ArgDispatcher - args.Paginator = *cgrArgs.SupplierPaginator - case subsystem == utils.MetaSuppliers: - args.GetSuppliers = true - case subsystem == utils.MetaSuppliersIgnoreErrors: - args.SuppliersIgnoreErrors = true - case subsystem == utils.MetaSuppliersEventCost: - args.SuppliersMaxCost = utils.MetaEventCost - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - tdIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &tdIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } @@ -306,35 +271,7 @@ func (kev KamEvent) V1InitSessionArgs() (args *sessions.V1InitSessionArgs) { if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.InitSession = true - case subsystem == utils.MetaResources: - args.AllocateResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, false) - args.ArgDispatcher = cgrArgs.ArgDispatcher - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } @@ -351,42 +288,7 @@ func (kev KamEvent) V1ProcessEventArgs() (args *sessions.V1ProcessEventArgs) { if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.Debit = true - case subsystem == utils.MetaResources: - args.AllocateResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, true) - args.ArgDispatcher = cgrArgs.ArgDispatcher - args.Paginator = *cgrArgs.SupplierPaginator - case subsystem == utils.MetaSuppliers: - args.GetSuppliers = true - case subsystem == utils.MetaSuppliersIgnoreErrors: - args.SuppliersIgnoreErrors = true - case subsystem == utils.MetaSuppliersEventCost: - args.SuppliersMaxCost = utils.MetaEventCost - case strings.Index(subsystem, utils.MetaAttributes) != -1: - args.GetAttributes = true - if attrWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(attrWithIDs) > 1 { - attrIDs := strings.Split(attrWithIDs[1], utils.INFIELD_SEP) - args.AttributeIDs = &attrIDs - } - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - tdIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &tdIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } @@ -493,29 +395,7 @@ func (kev KamEvent) V1TerminateSessionArgs() (args *sessions.V1TerminateSessionA if !has { return } - for _, subsystem := range strings.Split(subsystems, utils.FIELDS_SEP) { - switch { - case subsystem == utils.MetaAccounts: - args.TerminateSession = true - case subsystem == utils.MetaResources: - args.ReleaseResources = true - case subsystem == utils.MetaDispatchers: - cgrArgs := cgrEv.ConsumeArgs(true, false) - args.ArgDispatcher = cgrArgs.ArgDispatcher - case strings.Index(subsystem, utils.MetaThresholds) != -1: - args.ProcessThresholds = true - if thdWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(thdWithIDs) > 1 { - thIDs := strings.Split(thdWithIDs[1], utils.INFIELD_SEP) - args.ThresholdIDs = &thIDs - } - case strings.Index(subsystem, utils.MetaStats) != -1: - args.ProcessStats = true - if stsWithIDs := strings.Split(subsystem, utils.InInFieldSep); len(stsWithIDs) > 1 { - stsIDs := strings.Split(stsWithIDs[1], utils.INFIELD_SEP) - args.StatIDs = &stsIDs - } - } - } + args.ParseFlags(subsystems) return } diff --git a/config/config.go b/config/config.go index 2bd7e3477..202d27436 100755 --- a/config/config.go +++ b/config/config.go @@ -243,6 +243,7 @@ func isHidden(fileName string) bool { } return strings.HasPrefix(fileName, ".") } + func loadConfigFromFolder(cfg *CGRConfig, cfgDir string) (*CGRConfig, error) { jsonFilesFound := false err := filepath.Walk(cfgDir, func(path string, info os.FileInfo, err error) error { diff --git a/sessions/sessions.go b/sessions/sessions.go index 5c4fd265b..2d85b2090 100644 --- a/sessions/sessions.go +++ b/sessions/sessions.go @@ -1709,6 +1709,15 @@ func NewV1AuthorizeArgs(attrs bool, attributeIDs []string, return } +func getFlagIDs(flag string) *[]string { + flagWithIDs := strings.Split(flag, utils.InInFieldSep) + if len(flagWithIDs) <= 1 { + return nil + } + IDs := strings.Split(flagWithIDs[1], utils.INFIELD_SEP) + return &IDs +} + // V1AuthorizeArgs are options available in auth request type V1AuthorizeArgs struct { GetAttributes bool @@ -1727,6 +1736,38 @@ type V1AuthorizeArgs struct { *utils.ArgDispatcher } +func (args *V1AuthorizeArgs) ParseFlags(flags string) { + dispatcherFlag := false + for _, subsystem := range strings.Split(flags, utils.FIELDS_SEP) { + switch { + case subsystem == utils.MetaAccounts: + args.GetMaxUsage = true + case subsystem == utils.MetaResources: + args.AuthorizeResources = true + case subsystem == utils.MetaDispatchers: + dispatcherFlag = true + case subsystem == utils.MetaSuppliers: + args.GetSuppliers = true + case subsystem == utils.MetaSuppliersIgnoreErrors: + args.SuppliersIgnoreErrors = true + case subsystem == utils.MetaSuppliersEventCost: + args.SuppliersMaxCost = utils.MetaEventCost + case strings.HasPrefix(subsystem, utils.MetaAttributes): + args.GetAttributes = true + args.AttributeIDs = getFlagIDs(subsystem) + case strings.HasPrefix(subsystem, utils.MetaThresholds): + args.ProcessThresholds = true + args.ThresholdIDs = getFlagIDs(subsystem) + case strings.HasPrefix(subsystem, utils.MetaStats): + args.ProcessStats = true + args.StatIDs = getFlagIDs(subsystem) + } + } + cgrArgs := args.CGREvent.ConsumeArgs(dispatcherFlag, true) + args.ArgDispatcher = cgrArgs.ArgDispatcher + args.Paginator = *cgrArgs.SupplierPaginator +} + // V1AuthorizeReply are options available in auth reply type V1AuthorizeReply struct { Attributes *engine.AttrSProcessEventReply @@ -2010,6 +2051,31 @@ type V1InitSessionArgs struct { *utils.ArgDispatcher } +func (args *V1InitSessionArgs) ParseFlags(flags string) { + dispatcherFlag := false + for _, subsystem := range strings.Split(flags, utils.FIELDS_SEP) { + switch { + case subsystem == utils.MetaAccounts: + args.InitSession = true + case subsystem == utils.MetaResources: + args.AllocateResources = true + case subsystem == utils.MetaDispatchers: + dispatcherFlag = true + case strings.HasPrefix(subsystem, utils.MetaAttributes): + args.GetAttributes = true + args.AttributeIDs = getFlagIDs(subsystem) + case strings.HasPrefix(subsystem, utils.MetaThresholds): + args.ProcessThresholds = true + args.ThresholdIDs = getFlagIDs(subsystem) + case strings.HasPrefix(subsystem, utils.MetaStats): + args.ProcessStats = true + args.StatIDs = getFlagIDs(subsystem) + } + } + cgrArgs := args.CGREvent.ConsumeArgs(dispatcherFlag, false) + args.ArgDispatcher = cgrArgs.ArgDispatcher +} + // V1InitSessionReply are options for initialization reply type V1InitSessionReply struct { Attributes *engine.AttrSProcessEventReply @@ -2416,6 +2482,28 @@ type V1TerminateSessionArgs struct { *utils.ArgDispatcher } +func (args *V1TerminateSessionArgs) ParseFlags(flags string) { + dispatcherFlag := false + for _, subsystem := range strings.Split(flags, utils.FIELDS_SEP) { + switch { + case subsystem == utils.MetaAccounts: + args.TerminateSession = true + case subsystem == utils.MetaResources: + args.ReleaseResources = true + case subsystem == utils.MetaDispatchers: + dispatcherFlag = true + case strings.Index(subsystem, utils.MetaThresholds) != -1: + args.ProcessThresholds = true + args.ThresholdIDs = getFlagIDs(subsystem) + case strings.Index(subsystem, utils.MetaStats) != -1: + args.ProcessStats = true + args.StatIDs = getFlagIDs(subsystem) + } + } + cgrArgs := args.CGREvent.ConsumeArgs(dispatcherFlag, false) + args.ArgDispatcher = cgrArgs.ArgDispatcher +} + // BiRPCV1TerminateSession will stop debit loops as well as release any used resources func (sS *SessionS) BiRPCv1TerminateSession(clnt rpcclient.RpcClientConnection, args *V1TerminateSessionArgs, rply *string) (err error) { @@ -2693,6 +2781,38 @@ type V1ProcessEventArgs struct { *utils.ArgDispatcher } +func (args V1ProcessEventArgs) ParseFlags(flags string) { + dispatcherFlag := false + for _, subsystem := range strings.Split(flags, utils.FIELDS_SEP) { + switch { + case subsystem == utils.MetaAccounts: + args.Debit = true + case subsystem == utils.MetaResources: + args.AllocateResources = true + case subsystem == utils.MetaDispatchers: + dispatcherFlag = true + case subsystem == utils.MetaSuppliers: + args.GetSuppliers = true + case subsystem == utils.MetaSuppliersIgnoreErrors: + args.SuppliersIgnoreErrors = true + case subsystem == utils.MetaSuppliersEventCost: + args.SuppliersMaxCost = utils.MetaEventCost + case strings.Index(subsystem, utils.MetaAttributes) != -1: + args.GetAttributes = true + args.AttributeIDs = getFlagIDs(subsystem) + case strings.Index(subsystem, utils.MetaThresholds) != -1: + args.ProcessThresholds = true + args.ThresholdIDs = getFlagIDs(subsystem) + case strings.Index(subsystem, utils.MetaStats) != -1: + args.ProcessStats = true + args.StatIDs = getFlagIDs(subsystem) + } + } + cgrArgs := args.CGREvent.ConsumeArgs(dispatcherFlag, true) + args.ArgDispatcher = cgrArgs.ArgDispatcher + args.Paginator = *cgrArgs.SupplierPaginator +} + // V1ProcessEventReply is the reply for the ProcessEvent API type V1ProcessEventReply struct { MaxUsage *time.Duration