github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/client/scoutclient/rpcoptions.go (about) 1 // generated code; DO NOT EDIT 2 3 package scoutclient 4 5 import ( 6 "time" 7 8 coreclient "github.com/choria-io/go-choria/client/client" 9 rpcclient "github.com/choria-io/go-choria/providers/agent/mcorpc/client" 10 ) 11 12 // OptionReset resets the client options to use across requests to an empty list 13 func (p *ScoutClient) OptionReset() *ScoutClient { 14 p.Lock() 15 defer p.Unlock() 16 17 p.clientRPCOpts = []rpcclient.RequestOption{} 18 p.ns = p.clientOpts.ns 19 p.targets = []string{} 20 p.filters = []FilterFunc{ 21 FilterFunc(coreclient.AgentFilter("scout")), 22 } 23 24 return p 25 } 26 27 // OptionIdentityFilter adds an identity filter 28 func (p *ScoutClient) OptionIdentityFilter(f ...string) *ScoutClient { 29 p.Lock() 30 defer p.Unlock() 31 32 for _, i := range f { 33 if i == "" { 34 continue 35 } 36 37 p.filters = append(p.filters, FilterFunc(coreclient.IdentityFilter(i))) 38 } 39 40 p.ns.Reset() 41 42 return p 43 } 44 45 // OptionClassFilter adds a class filter 46 func (p *ScoutClient) OptionClassFilter(f ...string) *ScoutClient { 47 p.Lock() 48 defer p.Unlock() 49 50 for _, i := range f { 51 if i == "" { 52 continue 53 } 54 55 p.filters = append(p.filters, FilterFunc(coreclient.ClassFilter(i))) 56 } 57 58 p.ns.Reset() 59 60 return p 61 } 62 63 // OptionFactFilter adds a fact filter 64 func (p *ScoutClient) OptionFactFilter(f ...string) *ScoutClient { 65 p.Lock() 66 defer p.Unlock() 67 68 for _, i := range f { 69 if i == "" { 70 continue 71 } 72 73 p.filters = append(p.filters, FilterFunc(coreclient.FactFilter(i))) 74 } 75 76 p.ns.Reset() 77 78 return p 79 } 80 81 // OptionAgentFilter adds an agent filter 82 func (p *ScoutClient) OptionAgentFilter(a ...string) *ScoutClient { 83 p.Lock() 84 defer p.Unlock() 85 86 for _, f := range a { 87 if f == "" { 88 continue 89 } 90 91 p.filters = append(p.filters, FilterFunc(coreclient.AgentFilter(f))) 92 } 93 94 p.ns.Reset() 95 96 return p 97 } 98 99 // OptionCombinedFilter adds a combined filter 100 func (p *ScoutClient) OptionCombinedFilter(f ...string) *ScoutClient { 101 p.Lock() 102 defer p.Unlock() 103 104 for _, i := range f { 105 if i == "" { 106 continue 107 } 108 109 p.filters = append(p.filters, FilterFunc(coreclient.CombinedFilter(i))) 110 } 111 112 p.ns.Reset() 113 114 return p 115 } 116 117 // OptionCompoundFilter adds a compound filter 118 func (p *ScoutClient) OptionCompoundFilter(f ...string) *ScoutClient { 119 p.Lock() 120 defer p.Unlock() 121 122 for _, i := range f { 123 if i == "" { 124 continue 125 } 126 127 p.filters = append(p.filters, FilterFunc(coreclient.CompoundFilter(i))) 128 } 129 130 p.ns.Reset() 131 132 return p 133 } 134 135 // OptionCollective sets the collective to target 136 func (p *ScoutClient) OptionCollective(c string) *ScoutClient { 137 p.Lock() 138 defer p.Unlock() 139 140 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.Collective(c)) 141 return p 142 } 143 144 // OptionInBatches performs requests in batches 145 func (p *ScoutClient) OptionInBatches(size int, sleep int) *ScoutClient { 146 p.Lock() 147 defer p.Unlock() 148 149 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.InBatches(size, sleep)) 150 return p 151 } 152 153 // OptionDiscoveryTimeout configures the request discovery timeout, defaults to configured discovery timeout 154 func (p *ScoutClient) OptionDiscoveryTimeout(t time.Duration) *ScoutClient { 155 p.Lock() 156 defer p.Unlock() 157 158 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.DiscoveryTimeout(t)) 159 return p 160 } 161 162 // OptionLimitMethod configures the method to use when limiting targets - "random" or "first" 163 func (p *ScoutClient) OptionLimitMethod(m string) *ScoutClient { 164 p.Lock() 165 defer p.Unlock() 166 167 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.LimitMethod(m)) 168 return p 169 } 170 171 // OptionLimitSize sets limits on the targets, either a number of a percentage like "10%" 172 func (p *ScoutClient) OptionLimitSize(s string) *ScoutClient { 173 p.Lock() 174 defer p.Unlock() 175 176 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.LimitSize(s)) 177 return p 178 } 179 180 // OptionLimitSeed sets the random seed used to select targets when limiting and limit method is "random" 181 func (p *ScoutClient) OptionLimitSeed(s int64) *ScoutClient { 182 p.Lock() 183 defer p.Unlock() 184 185 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.LimitSeed(s)) 186 return p 187 } 188 189 // OptionTargets sets specific node targets which would avoid discovery for all action calls until reset 190 func (p *ScoutClient) OptionTargets(t []string) *ScoutClient { 191 p.Lock() 192 defer p.Unlock() 193 194 p.targets = t 195 return p 196 } 197 198 // OptionWorkers sets how many worker connections should be started to the broker 199 func (p *ScoutClient) OptionWorkers(w int) *ScoutClient { 200 p.Lock() 201 defer p.Unlock() 202 203 p.workers = w 204 return p 205 } 206 207 // OptionExprFilter sets a filter expression that will remove results from the result set 208 func (p *ScoutClient) OptionExprFilter(f string) *ScoutClient { 209 p.Lock() 210 defer p.Unlock() 211 212 p.exprFilter = f 213 return p 214 } 215 216 // OptionReplyTo sets a custom reply target 217 func (p *ScoutClient) OptionReplyTo(t string) *ScoutClient { 218 p.Lock() 219 defer p.Unlock() 220 221 p.clientRPCOpts = append(p.clientRPCOpts, rpcclient.ReplyTo(t)) 222 p.noReplies = true 223 p.clientOpts.progress = false 224 225 return p 226 }