mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: add all safe experiments to the deployment page (#10276)
* added new option table type for experiments * added tests * fixed go tests * added go test for new param * removing query change * clearing ExperimentsAll * dont mutate ExperimentsAll * added new route for safe experiments * added new route for safe experiments * added test for new route * PR feedback * altered design * alias children
This commit is contained in:
+21
-1
@@ -2013,12 +2013,13 @@ var ExperimentsAll = Experiments{
|
||||
ExperimentSingleTailnet,
|
||||
}
|
||||
|
||||
// Experiments is a list of experiments that are enabled for the deployment.
|
||||
// Experiments is a list of experiments.
|
||||
// Multiple experiments may be enabled at the same time.
|
||||
// Experiments are not safe for production use, and are not guaranteed to
|
||||
// be backwards compatible. They may be removed or renamed at any time.
|
||||
type Experiments []Experiment
|
||||
|
||||
// Returns a list of experiments that are enabled for the deployment.
|
||||
func (e Experiments) Enabled(ex Experiment) bool {
|
||||
for _, v := range e {
|
||||
if v == ex {
|
||||
@@ -2041,6 +2042,25 @@ func (c *Client) Experiments(ctx context.Context) (Experiments, error) {
|
||||
return exp, json.NewDecoder(res.Body).Decode(&exp)
|
||||
}
|
||||
|
||||
// AvailableExperiments is an expandable type that returns all safe experiments
|
||||
// available to be used with a deployment.
|
||||
type AvailableExperiments struct {
|
||||
Safe []Experiment `json:"safe"`
|
||||
}
|
||||
|
||||
func (c *Client) SafeExperiments(ctx context.Context) (AvailableExperiments, error) {
|
||||
res, err := c.Request(ctx, http.MethodGet, "/api/v2/experiments/available", nil)
|
||||
if err != nil {
|
||||
return AvailableExperiments{}, err
|
||||
}
|
||||
defer res.Body.Close()
|
||||
if res.StatusCode != http.StatusOK {
|
||||
return AvailableExperiments{}, ReadBodyAsError(res)
|
||||
}
|
||||
var exp AvailableExperiments
|
||||
return exp, json.NewDecoder(res.Body).Decode(&exp)
|
||||
}
|
||||
|
||||
type DAUsResponse struct {
|
||||
Entries []DAUEntry `json:"entries"`
|
||||
TZHourOffset int `json:"tz_hour_offset"`
|
||||
|
||||
Reference in New Issue
Block a user