mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-06-16 04:10:44 +00:00
start imp. server side set filters for agents
will allow https://github.com/woodpecker-ci/woodpecker/issues/267 TODOs: API to set server-side-agent-filters; WebUI; secure all rpc endpoints; secure set of labels for non-admins
This commit is contained in:
parent
fbdfa14a00
commit
414ee1d371
|
@ -56,13 +56,18 @@ func (s *RPC) Next(c context.Context, agentFilter rpc.Filter) (*rpc.Workflow, er
|
|||
log.Debug().Msgf("agent connected: %s: polling", hostname)
|
||||
}
|
||||
|
||||
filterFn := createFilterFunc(agentFilter)
|
||||
|
||||
agent, err := s.getAgentFromContext(c)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// enforce server set agent filters
|
||||
for k, v := range agent.Filters {
|
||||
agentFilter.Labels[k] = v
|
||||
}
|
||||
|
||||
filterFn := createFilterFunc(agentFilter)
|
||||
|
||||
if agent.NoSchedule {
|
||||
time.Sleep(1 * time.Second)
|
||||
return nil, nil
|
||||
|
|
|
@ -27,6 +27,8 @@ type Agent struct {
|
|||
Capacity int32 `json:"capacity" xorm:"capacity"`
|
||||
Version string `json:"version" xorm:"'version'"`
|
||||
NoSchedule bool `json:"no_schedule" xorm:"no_schedule"`
|
||||
// Server side enforced agent filters
|
||||
Filters map[string]string `json:"filters" xorm:"'filters' json"`
|
||||
} // @name Agent
|
||||
|
||||
// TableName return database table name for xorm
|
||||
|
|
Loading…
Reference in a new issue