Documentation
¶
Index ¶
- func Bool(b bool) param.Opt[bool]
- func BoolPtr(v bool) *bool
- func DefaultClientOptions() []option.RequestOption
- func File(rdr io.Reader, filename string, contentType string) file
- func Float(f float64) param.Opt[float64]
- func FloatPtr(v float64) *float64
- func Int(i int64) param.Opt[int64]
- func IntPtr(v int64) *int64
- func Opt[T comparable](v T) param.Opt[T]
- func Ptr[T any](v T) *T
- func String(s string) param.Opt[string]
- func StringPtr(v string) *string
- func Time(t time.Time) param.Opt[time.Time]
- func TimePtr(v time.Time) *time.Time
- type Client
- func (r *Client) Delete(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, ...) error
- func (r *Client) Get(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Patch(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Post(ctx context.Context, path string, params any, res any, ...) error
- func (r *Client) Put(ctx context.Context, path string, params any, res any, ...) error
- type CloudZone
- type CloudZoneParam
- type CloudZoneProvider
- type CloudZoneRegion
- type Error
- type GetResponse
- type HealthCheckResponse
- type HealthService
- type RegionListResponse
- type RegionService
- type ScheduleNewParams
- type ScheduleNewParamsWindow
- type ScheduleNewResponse
- type ScheduleNewResponseCarbonSavings
- type ScheduleOption
- type ScheduleService
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultClientOptions ¶
func DefaultClientOptions() []option.RequestOption
DefaultClientOptions read from the environment (CARBONAWARE_SCHEDULER_BASE_URL). This should be used to initialize new clients.
func Opt ¶
func Opt[T comparable](v T) param.Opt[T]
Types ¶
type Client ¶
type Client struct {
Options []option.RequestOption
Schedule ScheduleService
Regions RegionService
Health HealthService
}
Client creates a struct with services and top level methods that help with interacting with the carbonaware-scheduler API. You should not instantiate this client directly, and instead use the NewClient method instead.
func NewClient ¶
func NewClient(opts ...option.RequestOption) (r Client)
NewClient generates a new client with the default option read from the environment (CARBONAWARE_SCHEDULER_BASE_URL). The option passed in as arguments are applied after these default arguments, and all option will be passed down to the services and requests that this client makes.
func (*Client) Delete ¶
func (r *Client) Delete(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Delete makes a DELETE request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Execute ¶
func (r *Client) Execute(ctx context.Context, method string, path string, params any, res any, opts ...option.RequestOption) error
Execute makes a request with the given context, method, URL, request params, response, and request options. This is useful for hitting undocumented endpoints while retaining the base URL, auth, retries, and other options from the client.
If a byte slice or an io.Reader is supplied to params, it will be used as-is for the request body.
The params is by default serialized into the body using encoding/json. If your type implements a MarshalJSON function, it will be used instead to serialize the request. If a URLQuery method is implemented, the returned [url.Values] will be used as query strings to the url.
If your params struct uses param.Field, you must provide either [MarshalJSON], [URLQuery], and/or [MarshalForm] functions. It is undefined behavior to use a struct uses param.Field without specifying how it is serialized.
Any "…Params" object defined in this library can be used as the request argument. Note that 'path' arguments will not be forwarded into the url.
The response body will be deserialized into the res variable, depending on its type:
- A pointer to a *http.Response is populated by the raw response.
- A pointer to a byte array will be populated with the contents of the request body.
- A pointer to any other type uses this library's default JSON decoding, which respects UnmarshalJSON if it is defined on the type.
- A nil value will not read the response body.
For even greater flexibility, see option.WithResponseInto and option.WithResponseBodyInto.
func (*Client) Get ¶
func (r *Client) Get(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Get makes a GET request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
func (*Client) Patch ¶
func (r *Client) Patch(ctx context.Context, path string, params any, res any, opts ...option.RequestOption) error
Patch makes a PATCH request with the given URL, params, and optionally deserializes to a response. See [Execute] documentation on the params and response.
type CloudZone ¶
type CloudZone struct {
// Any of "aws", "gcp", "azure", "ovh".
Provider CloudZoneProvider `json:"provider,required"`
// Any of "af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2",
// "ap-northeast-3", "ap-south-1", "ap-south-2", "ap-southeast-2",
// "ap-southeast-3", "ap-southeast-4", "ap-southeast-5", "ap-southeast-7",
// "ca-central-1", "ca-west-1", "eu-central-1", "eu-central-2", "eu-north-1",
// "eu-south-1", "eu-south-2", "eu-west-1", "eu-west-2", "eu-west-3",
// "il-central-1", "me-central-1", "mx-central-1", "sa-east-1", "us-east-1",
// "us-east-2", "us-west-1", "us-west-2", "asia-east1", "asia-northeast1",
// "asia-southeast1", "europe-north1", "europe-west1", "europe-west3",
// "europe-west4", "northamerica-northeast2", "southamerica-west1", "us-central1",
// "us-east1", "us-east4", "us-west1", "us-west2", "australiacentral",
// "australiaeast", "australiasoutheast", "brazilsouth", "canadacentral",
// "canadaeast", "centralindia", "centralus", "chinaeast2", "chinanorth",
// "chinanorth2", "chinanorth3", "eastasia", "eastus", "eastus2", "francecentral",
// "germanywestcentral", "indonesiacentral", "israelcentral", "italynorth",
// "japaneast", "japanwest", "koreacentral", "mexicocentral", "newzealandnorth",
// "northcentralus", "northeurope", "norwayeast", "polandcentral",
// "southafricanorth", "southcentralus", "southindia", "spaincentral",
// "swedencentral", "switzerlandnorth", "uaenorth", "uksouth", "ukwest",
// "westcentralus", "westeurope", "westus", "westus2", "westus3", "fr-strasbourg",
// "pl-warsaw".
Region CloudZoneRegion `json:"region,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Provider respjson.Field
Region respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (CloudZone) ToParam ¶
func (r CloudZone) ToParam() CloudZoneParam
ToParam converts this CloudZone to a CloudZoneParam.
Warning: the fields of the param type will not be present. ToParam should only be used at the last possible moment before sending a request. Test for this with CloudZoneParam.Overrides()
func (*CloudZone) UnmarshalJSON ¶
type CloudZoneParam ¶
type CloudZoneParam struct {
// Any of "aws", "gcp", "azure", "ovh".
Provider CloudZoneProvider `json:"provider,omitzero,required"`
// Any of "af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2",
// "ap-northeast-3", "ap-south-1", "ap-south-2", "ap-southeast-2",
// "ap-southeast-3", "ap-southeast-4", "ap-southeast-5", "ap-southeast-7",
// "ca-central-1", "ca-west-1", "eu-central-1", "eu-central-2", "eu-north-1",
// "eu-south-1", "eu-south-2", "eu-west-1", "eu-west-2", "eu-west-3",
// "il-central-1", "me-central-1", "mx-central-1", "sa-east-1", "us-east-1",
// "us-east-2", "us-west-1", "us-west-2", "asia-east1", "asia-northeast1",
// "asia-southeast1", "europe-north1", "europe-west1", "europe-west3",
// "europe-west4", "northamerica-northeast2", "southamerica-west1", "us-central1",
// "us-east1", "us-east4", "us-west1", "us-west2", "australiacentral",
// "australiaeast", "australiasoutheast", "brazilsouth", "canadacentral",
// "canadaeast", "centralindia", "centralus", "chinaeast2", "chinanorth",
// "chinanorth2", "chinanorth3", "eastasia", "eastus", "eastus2", "francecentral",
// "germanywestcentral", "indonesiacentral", "israelcentral", "italynorth",
// "japaneast", "japanwest", "koreacentral", "mexicocentral", "newzealandnorth",
// "northcentralus", "northeurope", "norwayeast", "polandcentral",
// "southafricanorth", "southcentralus", "southindia", "spaincentral",
// "swedencentral", "switzerlandnorth", "uaenorth", "uksouth", "ukwest",
// "westcentralus", "westeurope", "westus", "westus2", "westus3", "fr-strasbourg",
// "pl-warsaw".
Region CloudZoneRegion `json:"region,omitzero,required"`
// contains filtered or unexported fields
}
The properties Provider, Region are required.
func (CloudZoneParam) MarshalJSON ¶
func (r CloudZoneParam) MarshalJSON() (data []byte, err error)
func (*CloudZoneParam) UnmarshalJSON ¶
func (r *CloudZoneParam) UnmarshalJSON(data []byte) error
type CloudZoneProvider ¶
type CloudZoneProvider string
const ( CloudZoneProviderAws CloudZoneProvider = "aws" CloudZoneProviderGcp CloudZoneProvider = "gcp" CloudZoneProviderAzure CloudZoneProvider = "azure" CloudZoneProviderOvh CloudZoneProvider = "ovh" )
type CloudZoneRegion ¶
type CloudZoneRegion string
const ( CloudZoneRegionAfSouth1 CloudZoneRegion = "af-south-1" CloudZoneRegionApEast1 CloudZoneRegion = "ap-east-1" CloudZoneRegionApNortheast1 CloudZoneRegion = "ap-northeast-1" CloudZoneRegionApNortheast2 CloudZoneRegion = "ap-northeast-2" CloudZoneRegionApNortheast3 CloudZoneRegion = "ap-northeast-3" CloudZoneRegionApSouth1 CloudZoneRegion = "ap-south-1" CloudZoneRegionApSouth2 CloudZoneRegion = "ap-south-2" CloudZoneRegionApSoutheast2 CloudZoneRegion = "ap-southeast-2" CloudZoneRegionApSoutheast3 CloudZoneRegion = "ap-southeast-3" CloudZoneRegionApSoutheast4 CloudZoneRegion = "ap-southeast-4" CloudZoneRegionApSoutheast5 CloudZoneRegion = "ap-southeast-5" CloudZoneRegionApSoutheast7 CloudZoneRegion = "ap-southeast-7" CloudZoneRegionCaCentral1 CloudZoneRegion = "ca-central-1" CloudZoneRegionCaWest1 CloudZoneRegion = "ca-west-1" CloudZoneRegionEuCentral1 CloudZoneRegion = "eu-central-1" CloudZoneRegionEuCentral2 CloudZoneRegion = "eu-central-2" CloudZoneRegionEuNorth1 CloudZoneRegion = "eu-north-1" CloudZoneRegionEuSouth1 CloudZoneRegion = "eu-south-1" CloudZoneRegionEuSouth2 CloudZoneRegion = "eu-south-2" CloudZoneRegionEuWest1 CloudZoneRegion = "eu-west-1" CloudZoneRegionEuWest2 CloudZoneRegion = "eu-west-2" CloudZoneRegionEuWest3 CloudZoneRegion = "eu-west-3" CloudZoneRegionIlCentral1 CloudZoneRegion = "il-central-1" CloudZoneRegionMeCentral1 CloudZoneRegion = "me-central-1" CloudZoneRegionMxCentral1 CloudZoneRegion = "mx-central-1" CloudZoneRegionSaEast1 CloudZoneRegion = "sa-east-1" CloudZoneRegionUsEast1KebabCase CloudZoneRegion = "us-east-1" CloudZoneRegionUsEast2 CloudZoneRegion = "us-east-2" CloudZoneRegionUsWest1KebabCase CloudZoneRegion = "us-west-1" CloudZoneRegionUsWest2KebabCase CloudZoneRegion = "us-west-2" CloudZoneRegionAsiaEast1 CloudZoneRegion = "asia-east1" CloudZoneRegionAsiaNortheast1 CloudZoneRegion = "asia-northeast1" CloudZoneRegionAsiaSoutheast1 CloudZoneRegion = "asia-southeast1" CloudZoneRegionEuropeNorth1 CloudZoneRegion = "europe-north1" CloudZoneRegionEuropeWest1 CloudZoneRegion = "europe-west1" CloudZoneRegionEuropeWest3 CloudZoneRegion = "europe-west3" CloudZoneRegionEuropeWest4 CloudZoneRegion = "europe-west4" CloudZoneRegionNorthamericaNortheast2 CloudZoneRegion = "northamerica-northeast2" CloudZoneRegionSouthamericaWest1 CloudZoneRegion = "southamerica-west1" CloudZoneRegionUsCentral1 CloudZoneRegion = "us-central1" CloudZoneRegionUsEast1 CloudZoneRegion = "us-east1" CloudZoneRegionUsEast4 CloudZoneRegion = "us-east4" CloudZoneRegionUsWest1 CloudZoneRegion = "us-west1" CloudZoneRegionUsWest2 CloudZoneRegion = "us-west2" CloudZoneRegionAustraliacentral CloudZoneRegion = "australiacentral" CloudZoneRegionAustraliaeast CloudZoneRegion = "australiaeast" CloudZoneRegionAustraliasoutheast CloudZoneRegion = "australiasoutheast" CloudZoneRegionBrazilsouth CloudZoneRegion = "brazilsouth" CloudZoneRegionCanadacentral CloudZoneRegion = "canadacentral" CloudZoneRegionCanadaeast CloudZoneRegion = "canadaeast" CloudZoneRegionCentralindia CloudZoneRegion = "centralindia" CloudZoneRegionCentralus CloudZoneRegion = "centralus" CloudZoneRegionChinaeast2 CloudZoneRegion = "chinaeast2" CloudZoneRegionChinanorth CloudZoneRegion = "chinanorth" CloudZoneRegionChinanorth2 CloudZoneRegion = "chinanorth2" CloudZoneRegionChinanorth3 CloudZoneRegion = "chinanorth3" CloudZoneRegionEastasia CloudZoneRegion = "eastasia" CloudZoneRegionEastus CloudZoneRegion = "eastus" CloudZoneRegionEastus2 CloudZoneRegion = "eastus2" CloudZoneRegionFrancecentral CloudZoneRegion = "francecentral" CloudZoneRegionGermanywestcentral CloudZoneRegion = "germanywestcentral" CloudZoneRegionIndonesiacentral CloudZoneRegion = "indonesiacentral" CloudZoneRegionIsraelcentral CloudZoneRegion = "israelcentral" CloudZoneRegionItalynorth CloudZoneRegion = "italynorth" CloudZoneRegionJapaneast CloudZoneRegion = "japaneast" CloudZoneRegionJapanwest CloudZoneRegion = "japanwest" CloudZoneRegionKoreacentral CloudZoneRegion = "koreacentral" CloudZoneRegionMexicocentral CloudZoneRegion = "mexicocentral" CloudZoneRegionNewzealandnorth CloudZoneRegion = "newzealandnorth" CloudZoneRegionNorthcentralus CloudZoneRegion = "northcentralus" CloudZoneRegionNortheurope CloudZoneRegion = "northeurope" CloudZoneRegionNorwayeast CloudZoneRegion = "norwayeast" CloudZoneRegionPolandcentral CloudZoneRegion = "polandcentral" CloudZoneRegionSouthafricanorth CloudZoneRegion = "southafricanorth" CloudZoneRegionSouthcentralus CloudZoneRegion = "southcentralus" CloudZoneRegionSouthindia CloudZoneRegion = "southindia" CloudZoneRegionSpaincentral CloudZoneRegion = "spaincentral" CloudZoneRegionSwedencentral CloudZoneRegion = "swedencentral" CloudZoneRegionSwitzerlandnorth CloudZoneRegion = "switzerlandnorth" CloudZoneRegionUaenorth CloudZoneRegion = "uaenorth" CloudZoneRegionUksouth CloudZoneRegion = "uksouth" CloudZoneRegionUkwest CloudZoneRegion = "ukwest" CloudZoneRegionWestcentralus CloudZoneRegion = "westcentralus" CloudZoneRegionWesteurope CloudZoneRegion = "westeurope" CloudZoneRegionWestus CloudZoneRegion = "westus" CloudZoneRegionWestus2 CloudZoneRegion = "westus2" CloudZoneRegionWestus3 CloudZoneRegion = "westus3" CloudZoneRegionFrStrasbourg CloudZoneRegion = "fr-strasbourg" CloudZoneRegionPlWarsaw CloudZoneRegion = "pl-warsaw" )
type GetResponse ¶
type HealthCheckResponse ¶
type HealthService ¶
type HealthService struct {
Options []option.RequestOption
}
HealthService contains methods and other services that help with interacting with the carbonaware-scheduler 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 NewHealthService method instead.
func NewHealthService ¶
func NewHealthService(opts ...option.RequestOption) (r HealthService)
NewHealthService 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 (*HealthService) Check ¶
func (r *HealthService) Check(ctx context.Context, opts ...option.RequestOption) (res *HealthCheckResponse, err error)
Health
type RegionListResponse ¶
type RegionListResponse struct {
Regions []CloudZone `json:"regions,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Regions respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (RegionListResponse) RawJSON ¶
func (r RegionListResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*RegionListResponse) UnmarshalJSON ¶
func (r *RegionListResponse) UnmarshalJSON(data []byte) error
type RegionService ¶
type RegionService struct {
Options []option.RequestOption
}
RegionService contains methods and other services that help with interacting with the carbonaware-scheduler 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 NewRegionService method instead.
func NewRegionService ¶
func NewRegionService(opts ...option.RequestOption) (r RegionService)
NewRegionService 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 (*RegionService) List ¶
func (r *RegionService) List(ctx context.Context, opts ...option.RequestOption) (res *RegionListResponse, err error)
Returns list of available regions.
type ScheduleNewParams ¶
type ScheduleNewParams struct {
Duration string `json:"duration,required" format:"duration"`
// List of time windows to schedule (start and end must be in the future)
Windows []ScheduleNewParamsWindow `json:"windows,omitzero,required"`
Zones []CloudZoneParam `json:"zones,omitzero,required"`
NumOptions param.Opt[int64] `json:"num_options,omitzero"`
// contains filtered or unexported fields
}
func (ScheduleNewParams) MarshalJSON ¶
func (r ScheduleNewParams) MarshalJSON() (data []byte, err error)
func (*ScheduleNewParams) UnmarshalJSON ¶
func (r *ScheduleNewParams) UnmarshalJSON(data []byte) error
type ScheduleNewParamsWindow ¶
type ScheduleNewParamsWindow struct {
End time.Time `json:"end,required" format:"date-time"`
Start time.Time `json:"start,required" format:"date-time"`
// contains filtered or unexported fields
}
The properties End, Start are required.
func (ScheduleNewParamsWindow) MarshalJSON ¶
func (r ScheduleNewParamsWindow) MarshalJSON() (data []byte, err error)
func (*ScheduleNewParamsWindow) UnmarshalJSON ¶
func (r *ScheduleNewParamsWindow) UnmarshalJSON(data []byte) error
type ScheduleNewResponse ¶
type ScheduleNewResponse struct {
CarbonSavings ScheduleNewResponseCarbonSavings `json:"carbon_savings,required"`
Ideal ScheduleOption `json:"ideal,required"`
MedianCase ScheduleOption `json:"median_case,required"`
NaiveCase ScheduleOption `json:"naive_case,required"`
Options []ScheduleOption `json:"options,required"`
WorstCase ScheduleOption `json:"worst_case,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
CarbonSavings respjson.Field
Ideal respjson.Field
MedianCase respjson.Field
NaiveCase respjson.Field
Options respjson.Field
WorstCase respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (ScheduleNewResponse) RawJSON ¶
func (r ScheduleNewResponse) RawJSON() string
Returns the unmodified JSON received from the API
func (*ScheduleNewResponse) UnmarshalJSON ¶
func (r *ScheduleNewResponse) UnmarshalJSON(data []byte) error
type ScheduleNewResponseCarbonSavings ¶
type ScheduleNewResponseCarbonSavings struct {
VsMedianCase float64 `json:"vs_median_case,required"`
VsNaiveCase float64 `json:"vs_naive_case,required"`
VsWorstCase float64 `json:"vs_worst_case,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
VsMedianCase respjson.Field
VsNaiveCase respjson.Field
VsWorstCase respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (ScheduleNewResponseCarbonSavings) RawJSON ¶
func (r ScheduleNewResponseCarbonSavings) RawJSON() string
Returns the unmodified JSON received from the API
func (*ScheduleNewResponseCarbonSavings) UnmarshalJSON ¶
func (r *ScheduleNewResponseCarbonSavings) UnmarshalJSON(data []byte) error
type ScheduleOption ¶
type ScheduleOption struct {
Co2Intensity float64 `json:"co2_intensity,required"`
Time time.Time `json:"time,required" format:"date-time"`
Zone CloudZone `json:"zone,required"`
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
JSON struct {
Co2Intensity respjson.Field
Time respjson.Field
Zone respjson.Field
ExtraFields map[string]respjson.Field
// contains filtered or unexported fields
} `json:"-"`
}
func (ScheduleOption) RawJSON ¶
func (r ScheduleOption) RawJSON() string
Returns the unmodified JSON received from the API
func (*ScheduleOption) UnmarshalJSON ¶
func (r *ScheduleOption) UnmarshalJSON(data []byte) error
type ScheduleService ¶
type ScheduleService struct {
Options []option.RequestOption
}
ScheduleService contains methods and other services that help with interacting with the carbonaware-scheduler 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 NewScheduleService method instead.
func NewScheduleService ¶
func NewScheduleService(opts ...option.RequestOption) (r ScheduleService)
NewScheduleService 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 (*ScheduleService) New ¶
func (r *ScheduleService) New(ctx context.Context, body ScheduleNewParams, opts ...option.RequestOption) (res *ScheduleNewResponse, err error)
Schedule
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
encoding/json
Package json implements encoding and decoding of JSON as defined in RFC 7159.
|
Package json implements encoding and decoding of JSON as defined in RFC 7159. |
|
encoding/json/shims
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.21, and used by the Go 1.24 encoding/json package.
|
This package provides shims over Go 1.2{2,3} APIs which are missing from Go 1.21, and used by the Go 1.24 encoding/json package. |
|
packages
|
|
|
shared
|
|