-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenvironmentclass.go
151 lines (137 loc) · 5.71 KB
/
environmentclass.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
package gitpod
import (
"context"
"net/http"
"net/url"
"github.com/gitpod-io/gitpod-sdk-go/internal/apijson"
"github.com/gitpod-io/gitpod-sdk-go/internal/apiquery"
"github.com/gitpod-io/gitpod-sdk-go/internal/param"
"github.com/gitpod-io/gitpod-sdk-go/internal/requestconfig"
"github.com/gitpod-io/gitpod-sdk-go/option"
"github.com/gitpod-io/gitpod-sdk-go/packages/pagination"
"github.com/gitpod-io/gitpod-sdk-go/shared"
)
// EnvironmentClassService contains methods and other services that help with
// interacting with the gitpod API.
//
// Note, unlike clients, this service does not read variables from the environment
// automatically. You should not instantiate this service directly, and instead use
// the [NewEnvironmentClassService] method instead.
type EnvironmentClassService struct {
Options []option.RequestOption
}
// NewEnvironmentClassService generates a new service that applies the given
// options to each request. These options are applied after the parent client's
// options (if there is one), and before any request-specific options.
func NewEnvironmentClassService(opts ...option.RequestOption) (r *EnvironmentClassService) {
r = &EnvironmentClassService{}
r.Options = opts
return
}
// Lists available environment classes with their specifications and resource
// limits.
//
// Use this method to understand what types of environments you can create and
// their capabilities. Environment classes define the compute resources and
// features available to your environments.
//
// ### Examples
//
// - List all available classes:
//
// Retrieves a list of all environment classes with their specifications.
//
// ```yaml
// {}
// ```
//
// buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
func (r *EnvironmentClassService) List(ctx context.Context, params EnvironmentClassListParams, opts ...option.RequestOption) (res *pagination.EnvironmentClassesPage[shared.EnvironmentClass], err error) {
var raw *http.Response
opts = append(r.Options[:], opts...)
opts = append([]option.RequestOption{option.WithResponseInto(&raw)}, opts...)
path := "gitpod.v1.EnvironmentService/ListEnvironmentClasses"
cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodPost, path, params, &res, opts...)
if err != nil {
return nil, err
}
err = cfg.Execute()
if err != nil {
return nil, err
}
res.SetPageConfig(cfg, raw)
return res, nil
}
// Lists available environment classes with their specifications and resource
// limits.
//
// Use this method to understand what types of environments you can create and
// their capabilities. Environment classes define the compute resources and
// features available to your environments.
//
// ### Examples
//
// - List all available classes:
//
// Retrieves a list of all environment classes with their specifications.
//
// ```yaml
// {}
// ```
//
// buf:lint:ignore RPC_REQUEST_RESPONSE_UNIQUE
func (r *EnvironmentClassService) ListAutoPaging(ctx context.Context, params EnvironmentClassListParams, opts ...option.RequestOption) *pagination.EnvironmentClassesPageAutoPager[shared.EnvironmentClass] {
return pagination.NewEnvironmentClassesPageAutoPager(r.List(ctx, params, opts...))
}
type EnvironmentClassListParams struct {
Token param.Field[string] `query:"token"`
PageSize param.Field[int64] `query:"pageSize"`
Filter param.Field[EnvironmentClassListParamsFilter] `json:"filter"`
// pagination contains the pagination options for listing environment classes
Pagination param.Field[EnvironmentClassListParamsPagination] `json:"pagination"`
}
func (r EnvironmentClassListParams) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
// URLQuery serializes [EnvironmentClassListParams]'s query parameters as
// `url.Values`.
func (r EnvironmentClassListParams) URLQuery() (v url.Values) {
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
ArrayFormat: apiquery.ArrayQueryFormatComma,
NestedFormat: apiquery.NestedQueryFormatBrackets,
})
}
type EnvironmentClassListParamsFilter struct {
// can_create_environments filters the response to only environment classes that
// can be used to create new environments by the caller. Unlike enabled, which
// indicates general availability, this ensures the caller only sees environment
// classes they are allowed to use.
CanCreateEnvironments param.Field[bool] `json:"canCreateEnvironments"`
// enabled filters the response to only enabled or disabled environment classes. If
// not set, all environment classes are returned.
Enabled param.Field[bool] `json:"enabled"`
// runner_ids filters the response to only EnvironmentClasses of these Runner IDs
RunnerIDs param.Field[[]string] `json:"runnerIds" format:"uuid"`
// runner_kind filters the response to only environment classes from runners of
// these kinds.
RunnerKinds param.Field[[]RunnerKind] `json:"runnerKinds"`
// runner_providers filters the response to only environment classes from runners
// of these providers.
RunnerProviders param.Field[[]RunnerProvider] `json:"runnerProviders"`
}
func (r EnvironmentClassListParamsFilter) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
// pagination contains the pagination options for listing environment classes
type EnvironmentClassListParamsPagination struct {
// Token for the next set of results that was returned as next_token of a
// PaginationResponse
Token param.Field[string] `json:"token"`
// Page size is the maximum number of results to retrieve per page. Defaults to 25.
// Maximum 100.
PageSize param.Field[int64] `json:"pageSize"`
}
func (r EnvironmentClassListParamsPagination) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}