From befd47be6cfc56d0da9ac5e3d8d812923110fb0e Mon Sep 17 00:00:00 2001 From: scaleway-bot Date: Wed, 26 Jan 2022 15:28:47 +0000 Subject: [PATCH 1/2] feat: update generated apis --- api/baremetal/v1/baremetal_sdk.go | 208 ++++++++++++++++ api/container/v1beta1/container_sdk.go | 286 ++++++++++++++++++++++ api/domain/v2beta1/domain_sdk.go | 30 +-- api/flexibleip/v1alpha1/flexibleip_sdk.go | 2 + api/function/v1beta1/function_sdk.go | 286 ++++++++++++++++++++++ api/lb/v1/lb_sdk.go | 65 +++++ 6 files changed, 860 insertions(+), 17 deletions(-) diff --git a/api/baremetal/v1/baremetal_sdk.go b/api/baremetal/v1/baremetal_sdk.go index 9e329781a..9c7857e9c 100644 --- a/api/baremetal/v1/baremetal_sdk.go +++ b/api/baremetal/v1/baremetal_sdk.go @@ -183,6 +183,38 @@ func (enum *ListServersRequestOrderBy) UnmarshalJSON(data []byte) error { return nil } +type ListSettingsRequestOrderBy string + +const ( + // ListSettingsRequestOrderByCreatedAtAsc is [insert doc]. + ListSettingsRequestOrderByCreatedAtAsc = ListSettingsRequestOrderBy("created_at_asc") + // ListSettingsRequestOrderByCreatedAtDesc is [insert doc]. + ListSettingsRequestOrderByCreatedAtDesc = ListSettingsRequestOrderBy("created_at_desc") +) + +func (enum ListSettingsRequestOrderBy) String() string { + if enum == "" { + // return default value if empty + return "created_at_asc" + } + return string(enum) +} + +func (enum ListSettingsRequestOrderBy) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"%s"`, enum)), nil +} + +func (enum *ListSettingsRequestOrderBy) UnmarshalJSON(data []byte) error { + tmp := "" + + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + + *enum = ListSettingsRequestOrderBy(ListSettingsRequestOrderBy(tmp).String()) + return nil +} + type OfferStock string const ( @@ -445,6 +477,38 @@ func (enum *ServerStatus) UnmarshalJSON(data []byte) error { return nil } +type SettingType string + +const ( + // SettingTypeUnknown is [insert doc]. + SettingTypeUnknown = SettingType("unknown") + // SettingTypeSMTP is [insert doc]. + SettingTypeSMTP = SettingType("smtp") +) + +func (enum SettingType) String() string { + if enum == "" { + // return default value if empty + return "unknown" + } + return string(enum) +} + +func (enum SettingType) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"%s"`, enum)), nil +} + +func (enum *SettingType) UnmarshalJSON(data []byte) error { + tmp := "" + + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + + *enum = SettingType(SettingType(tmp).String()) + return nil +} + // BMCAccess: bmc access type BMCAccess struct { // URL: URL to access to the server console @@ -559,6 +623,14 @@ type ListServersResponse struct { Servers []*Server `json:"servers"` } +// ListSettingsResponse: list settings response +type ListSettingsResponse struct { + // TotalCount: total count of matching sttings + TotalCount uint32 `json:"total_count"` + // Settings: settings that match filters + Settings []*Setting `json:"settings"` +} + // Memory: memory type Memory struct { Capacity scw.Size `json:"capacity"` @@ -770,6 +842,20 @@ type ServerOption struct { Manageable bool `json:"manageable"` } +// Setting: setting +type Setting struct { + // ID: ID of the setting + ID string `json:"id"` + // Type: type of the setting + // + // Default value: unknown + Type SettingType `json:"type"` + // ProjectID: ID of the project ID + ProjectID string `json:"project_id"` + // Enabled: the setting is enable or disable + Enabled bool `json:"enabled"` +} + // Service API type ListServersRequest struct { @@ -1806,6 +1892,109 @@ func (s *API) ListOptions(req *ListOptionsRequest, opts ...scw.RequestOption) (* return &resp, nil } +type ListSettingsRequest struct { + Zone scw.Zone `json:"-"` + // Page: page number + Page *int32 `json:"-"` + // PageSize: set the maximum list size + PageSize *uint32 `json:"-"` + // OrderBy: order the response + // + // Default value: created_at_asc + OrderBy ListSettingsRequestOrderBy `json:"-"` + // ProjectID: ID of the project + ProjectID *string `json:"-"` +} + +// ListSettings: list all settings +// +// Return all settings for a project ID. +func (s *API) ListSettings(req *ListSettingsRequest, opts ...scw.RequestOption) (*ListSettingsResponse, error) { + var err error + + if req.Zone == "" { + defaultZone, _ := s.client.GetDefaultZone() + req.Zone = defaultZone + } + + defaultPageSize, exist := s.client.GetDefaultPageSize() + if (req.PageSize == nil || *req.PageSize == 0) && exist { + req.PageSize = &defaultPageSize + } + + query := url.Values{} + parameter.AddToQuery(query, "page", req.Page) + parameter.AddToQuery(query, "page_size", req.PageSize) + parameter.AddToQuery(query, "order_by", req.OrderBy) + parameter.AddToQuery(query, "project_id", req.ProjectID) + + if fmt.Sprint(req.Zone) == "" { + return nil, errors.New("field Zone cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "GET", + Path: "/baremetal/v1/zones/" + fmt.Sprint(req.Zone) + "/settings", + Query: query, + Headers: http.Header{}, + } + + var resp ListSettingsResponse + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type UpdateSettingRequest struct { + Zone scw.Zone `json:"-"` + // SettingID: ID of the setting + SettingID string `json:"-"` + // Enabled: enable/Disable the setting + Enabled *bool `json:"enabled"` +} + +// UpdateSetting: update setting +// +// Update a setting for a project ID (enable or disable). +func (s *API) UpdateSetting(req *UpdateSettingRequest, opts ...scw.RequestOption) (*Setting, error) { + var err error + + if req.Zone == "" { + defaultZone, _ := s.client.GetDefaultZone() + req.Zone = defaultZone + } + + if fmt.Sprint(req.Zone) == "" { + return nil, errors.New("field Zone cannot be empty in request") + } + + if fmt.Sprint(req.SettingID) == "" { + return nil, errors.New("field SettingID cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "PATCH", + Path: "/baremetal/v1/zones/" + fmt.Sprint(req.Zone) + "/settings/" + fmt.Sprint(req.SettingID) + "", + Headers: http.Header{}, + } + + err = scwReq.SetBody(req) + if err != nil { + return nil, err + } + + var resp Setting + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + type ListOSRequest struct { Zone scw.Zone `json:"-"` // Page: page number @@ -1973,6 +2162,25 @@ func (r *ListOptionsResponse) UnsafeAppend(res interface{}) (uint32, error) { return uint32(len(results.Options)), nil } +// UnsafeGetTotalCount should not be used +// Internal usage only +func (r *ListSettingsResponse) UnsafeGetTotalCount() uint32 { + return r.TotalCount +} + +// UnsafeAppend should not be used +// Internal usage only +func (r *ListSettingsResponse) UnsafeAppend(res interface{}) (uint32, error) { + results, ok := res.(*ListSettingsResponse) + if !ok { + return 0, errors.New("%T type cannot be appended to type %T", res, r) + } + + r.Settings = append(r.Settings, results.Settings...) + r.TotalCount += uint32(len(results.Settings)) + return uint32(len(results.Settings)), nil +} + // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListOSResponse) UnsafeGetTotalCount() uint32 { diff --git a/api/container/v1beta1/container_sdk.go b/api/container/v1beta1/container_sdk.go index 571ca287f..55cff5329 100644 --- a/api/container/v1beta1/container_sdk.go +++ b/api/container/v1beta1/container_sdk.go @@ -205,6 +205,46 @@ func (enum *CronStatus) UnmarshalJSON(data []byte) error { return nil } +type DomainStatus string + +const ( + // DomainStatusUnknown is [insert doc]. + DomainStatusUnknown = DomainStatus("unknown") + // DomainStatusReady is [insert doc]. + DomainStatusReady = DomainStatus("ready") + // DomainStatusDeleting is [insert doc]. + DomainStatusDeleting = DomainStatus("deleting") + // DomainStatusError is [insert doc]. + DomainStatusError = DomainStatus("error") + // DomainStatusCreating is [insert doc]. + DomainStatusCreating = DomainStatus("creating") + // DomainStatusPending is [insert doc]. + DomainStatusPending = DomainStatus("pending") +) + +func (enum DomainStatus) String() string { + if enum == "" { + // return default value if empty + return "unknown" + } + return string(enum) +} + +func (enum DomainStatus) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"%s"`, enum)), nil +} + +func (enum *DomainStatus) UnmarshalJSON(data []byte) error { + tmp := "" + + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + + *enum = DomainStatus(DomainStatus(tmp).String()) + return nil +} + type ListContainersRequestOrderBy string const ( @@ -273,6 +313,42 @@ func (enum *ListCronsRequestOrderBy) UnmarshalJSON(data []byte) error { return nil } +type ListDomainsRequestOrderBy string + +const ( + // ListDomainsRequestOrderByCreatedAtAsc is [insert doc]. + ListDomainsRequestOrderByCreatedAtAsc = ListDomainsRequestOrderBy("created_at_asc") + // ListDomainsRequestOrderByCreatedAtDesc is [insert doc]. + ListDomainsRequestOrderByCreatedAtDesc = ListDomainsRequestOrderBy("created_at_desc") + // ListDomainsRequestOrderByHostnameAsc is [insert doc]. + ListDomainsRequestOrderByHostnameAsc = ListDomainsRequestOrderBy("hostname_asc") + // ListDomainsRequestOrderByHostnameDesc is [insert doc]. + ListDomainsRequestOrderByHostnameDesc = ListDomainsRequestOrderBy("hostname_desc") +) + +func (enum ListDomainsRequestOrderBy) String() string { + if enum == "" { + // return default value if empty + return "created_at_asc" + } + return string(enum) +} + +func (enum ListDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"%s"`, enum)), nil +} + +func (enum *ListDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { + tmp := "" + + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + + *enum = ListDomainsRequestOrderBy(ListDomainsRequestOrderBy(tmp).String()) + return nil +} + type ListLogsRequestOrderBy string const ( @@ -475,6 +551,23 @@ type Cron struct { Status CronStatus `json:"status"` } +// Domain: domain +type Domain struct { + ID string `json:"id"` + + Hostname string `json:"hostname"` + + ContainerID string `json:"container_id"` + + URL string `json:"url"` + // Status: + // + // Default value: unknown + Status DomainStatus `json:"status"` + + ErrorMessage *string `json:"error_message"` +} + // ListContainersResponse: list containers response type ListContainersResponse struct { Containers []*Container `json:"containers"` @@ -489,6 +582,13 @@ type ListCronsResponse struct { TotalCount uint32 `json:"total_count"` } +// ListDomainsResponse: list domains response +type ListDomainsResponse struct { + Domains []*Domain `json:"domains"` + + TotalCount uint32 `json:"total_count"` +} + // ListLogsResponse: list logs response type ListLogsResponse struct { Logs []*Log `json:"logs"` @@ -1411,6 +1511,173 @@ func (s *API) ListLogs(req *ListLogsRequest, opts ...scw.RequestOption) (*ListLo return &resp, nil } +type ListDomainsRequest struct { + Region scw.Region `json:"-"` + + Page *int32 `json:"-"` + + PageSize *uint32 `json:"-"` + // OrderBy: + // + // Default value: created_at_asc + OrderBy ListDomainsRequestOrderBy `json:"-"` + + ContainerID string `json:"-"` +} + +func (s *API) ListDomains(req *ListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + defaultPageSize, exist := s.client.GetDefaultPageSize() + if (req.PageSize == nil || *req.PageSize == 0) && exist { + req.PageSize = &defaultPageSize + } + + query := url.Values{} + parameter.AddToQuery(query, "page", req.Page) + parameter.AddToQuery(query, "page_size", req.PageSize) + parameter.AddToQuery(query, "order_by", req.OrderBy) + parameter.AddToQuery(query, "container_id", req.ContainerID) + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "GET", + Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains", + Query: query, + Headers: http.Header{}, + } + + var resp ListDomainsResponse + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type GetDomainRequest struct { + Region scw.Region `json:"-"` + + DomainID string `json:"-"` +} + +func (s *API) GetDomain(req *GetDomainRequest, opts ...scw.RequestOption) (*Domain, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + if fmt.Sprint(req.DomainID) == "" { + return nil, errors.New("field DomainID cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "GET", + Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains/" + fmt.Sprint(req.DomainID) + "", + Headers: http.Header{}, + } + + var resp Domain + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type CreateDomainRequest struct { + Region scw.Region `json:"-"` + + Hostname string `json:"hostname"` + + ContainerID string `json:"container_id"` +} + +func (s *API) CreateDomain(req *CreateDomainRequest, opts ...scw.RequestOption) (*Domain, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "POST", + Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains", + Headers: http.Header{}, + } + + err = scwReq.SetBody(req) + if err != nil { + return nil, err + } + + var resp Domain + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type DeleteDomainRequest struct { + Region scw.Region `json:"-"` + + DomainID string `json:"-"` +} + +func (s *API) DeleteDomain(req *DeleteDomainRequest, opts ...scw.RequestOption) (*Domain, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + if fmt.Sprint(req.DomainID) == "" { + return nil, errors.New("field DomainID cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "DELETE", + Path: "/containers/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains/" + fmt.Sprint(req.DomainID) + "", + Headers: http.Header{}, + } + + var resp Domain + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + type IssueJWTRequest struct { Region scw.Region `json:"-"` @@ -1529,3 +1796,22 @@ func (r *ListLogsResponse) UnsafeAppend(res interface{}) (uint32, error) { r.TotalCount += uint32(len(results.Logs)) return uint32(len(results.Logs)), nil } + +// UnsafeGetTotalCount should not be used +// Internal usage only +func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32 { + return r.TotalCount +} + +// UnsafeAppend should not be used +// Internal usage only +func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { + results, ok := res.(*ListDomainsResponse) + if !ok { + return 0, errors.New("%T type cannot be appended to type %T", res, r) + } + + r.Domains = append(r.Domains, results.Domains...) + r.TotalCount += uint32(len(results.Domains)) + return uint32(len(results.Domains)), nil +} diff --git a/api/domain/v2beta1/domain_sdk.go b/api/domain/v2beta1/domain_sdk.go index 516016ce0..38f8c5f93 100644 --- a/api/domain/v2beta1/domain_sdk.go +++ b/api/domain/v2beta1/domain_sdk.go @@ -1456,7 +1456,7 @@ type NewContact struct { } type OrderResponse struct { - Domain string `json:"domain"` + Domains []string `json:"domains"` OrganizationID string `json:"organization_id"` @@ -2729,8 +2729,8 @@ func (s *RegistrarAPI) ListTasks(req *RegistrarAPIListTasksRequest, opts ...scw. return &resp, nil } -type RegistrarAPIBuyDomainRequest struct { - Domain string `json:"domain"` +type RegistrarAPIBuyDomainsRequest struct { + Domains []string `json:"domains"` DurationInYears uint32 `json:"duration_in_years"` @@ -2755,12 +2755,12 @@ type RegistrarAPIBuyDomainRequest struct { TechnicalContact *NewContact `json:"technical_contact,omitempty"` } -// BuyDomain: buy a domain +// BuyDomains: buy one or more domains // -// Request the registration of a domain name. +// Request the registration of domain names. // You can provide an already existing domain's contact or a new contact. // -func (s *RegistrarAPI) BuyDomain(req *RegistrarAPIBuyDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { +func (s *RegistrarAPI) BuyDomains(req *RegistrarAPIBuyDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error if req.ProjectID == "" { @@ -2770,7 +2770,7 @@ func (s *RegistrarAPI) BuyDomain(req *RegistrarAPIBuyDomainRequest, opts ...scw. scwReq := &scw.ScalewayRequest{ Method: "POST", - Path: "/domain/v2beta1/domains", + Path: "/domain/v2beta1/buy-domains", Headers: http.Header{}, } @@ -2788,28 +2788,24 @@ func (s *RegistrarAPI) BuyDomain(req *RegistrarAPIBuyDomainRequest, opts ...scw. return &resp, nil } -type RegistrarAPIRenewDomainRequest struct { - Domain string `json:"-"` +type RegistrarAPIRenewDomainsRequest struct { + Domains []string `json:"domains"` DurationInYears uint32 `json:"duration_in_years"` ForceLateRenewal *bool `json:"force_late_renewal"` } -// RenewDomain: renew a domain +// RenewDomains: renew one or more domains // -// Request the renewal of a domain name. +// Request the renewal of domain names. // -func (s *RegistrarAPI) RenewDomain(req *RegistrarAPIRenewDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { +func (s *RegistrarAPI) RenewDomains(req *RegistrarAPIRenewDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error - if fmt.Sprint(req.Domain) == "" { - return nil, errors.New("field Domain cannot be empty in request") - } - scwReq := &scw.ScalewayRequest{ Method: "POST", - Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/renew", + Path: "/domain/v2beta1/renew-domains", Headers: http.Header{}, } diff --git a/api/flexibleip/v1alpha1/flexibleip_sdk.go b/api/flexibleip/v1alpha1/flexibleip_sdk.go index 7f58b742d..efbf61def 100644 --- a/api/flexibleip/v1alpha1/flexibleip_sdk.go +++ b/api/flexibleip/v1alpha1/flexibleip_sdk.go @@ -295,6 +295,8 @@ type CreateFlexibleIPRequest struct { ServerID *string `json:"server_id"` // Reverse: reverse DNS value Reverse *string `json:"reverse"` + // IsIPv6: if true, creates a Flexible IP with an ipv6 address + IsIPv6 bool `json:"is_ipv6"` } // CreateFlexibleIP: create a Flexible IP diff --git a/api/function/v1beta1/function_sdk.go b/api/function/v1beta1/function_sdk.go index efeb264f1..674179253 100644 --- a/api/function/v1beta1/function_sdk.go +++ b/api/function/v1beta1/function_sdk.go @@ -93,6 +93,46 @@ func (enum *CronStatus) UnmarshalJSON(data []byte) error { return nil } +type DomainStatus string + +const ( + // DomainStatusUnknown is [insert doc]. + DomainStatusUnknown = DomainStatus("unknown") + // DomainStatusReady is [insert doc]. + DomainStatusReady = DomainStatus("ready") + // DomainStatusDeleting is [insert doc]. + DomainStatusDeleting = DomainStatus("deleting") + // DomainStatusError is [insert doc]. + DomainStatusError = DomainStatus("error") + // DomainStatusCreating is [insert doc]. + DomainStatusCreating = DomainStatus("creating") + // DomainStatusPending is [insert doc]. + DomainStatusPending = DomainStatus("pending") +) + +func (enum DomainStatus) String() string { + if enum == "" { + // return default value if empty + return "unknown" + } + return string(enum) +} + +func (enum DomainStatus) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"%s"`, enum)), nil +} + +func (enum *DomainStatus) UnmarshalJSON(data []byte) error { + tmp := "" + + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + + *enum = DomainStatus(DomainStatus(tmp).String()) + return nil +} + type FunctionPrivacy string const ( @@ -245,6 +285,42 @@ func (enum *ListCronsRequestOrderBy) UnmarshalJSON(data []byte) error { return nil } +type ListDomainsRequestOrderBy string + +const ( + // ListDomainsRequestOrderByCreatedAtAsc is [insert doc]. + ListDomainsRequestOrderByCreatedAtAsc = ListDomainsRequestOrderBy("created_at_asc") + // ListDomainsRequestOrderByCreatedAtDesc is [insert doc]. + ListDomainsRequestOrderByCreatedAtDesc = ListDomainsRequestOrderBy("created_at_desc") + // ListDomainsRequestOrderByHostnameAsc is [insert doc]. + ListDomainsRequestOrderByHostnameAsc = ListDomainsRequestOrderBy("hostname_asc") + // ListDomainsRequestOrderByHostnameDesc is [insert doc]. + ListDomainsRequestOrderByHostnameDesc = ListDomainsRequestOrderBy("hostname_desc") +) + +func (enum ListDomainsRequestOrderBy) String() string { + if enum == "" { + // return default value if empty + return "created_at_asc" + } + return string(enum) +} + +func (enum ListDomainsRequestOrderBy) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(`"%s"`, enum)), nil +} + +func (enum *ListDomainsRequestOrderBy) UnmarshalJSON(data []byte) error { + tmp := "" + + if err := json.Unmarshal(data, &tmp); err != nil { + return err + } + + *enum = ListDomainsRequestOrderBy(ListDomainsRequestOrderBy(tmp).String()) + return nil +} + type ListFunctionsRequestOrderBy string const ( @@ -436,6 +512,23 @@ type Cron struct { Status CronStatus `json:"status"` } +// Domain: domain +type Domain struct { + ID string `json:"id"` + + Hostname string `json:"hostname"` + + FunctionID string `json:"function_id"` + + URL string `json:"url"` + // Status: + // + // Default value: unknown + Status DomainStatus `json:"status"` + + ErrorMessage *string `json:"error_message"` +} + type DownloadURL struct { URL string `json:"url"` @@ -490,6 +583,13 @@ type ListCronsResponse struct { TotalCount uint32 `json:"total_count"` } +// ListDomainsResponse: list domains response +type ListDomainsResponse struct { + Domains []*Domain `json:"domains"` + + TotalCount uint32 `json:"total_count"` +} + // ListFunctionRuntimesResponse: list function runtimes response type ListFunctionRuntimesResponse struct { Runtimes []FunctionRuntime `json:"runtimes"` @@ -1535,6 +1635,173 @@ func (s *API) ListLogs(req *ListLogsRequest, opts ...scw.RequestOption) (*ListLo return &resp, nil } +type ListDomainsRequest struct { + Region scw.Region `json:"-"` + + Page *int32 `json:"-"` + + PageSize *uint32 `json:"-"` + // OrderBy: + // + // Default value: created_at_asc + OrderBy ListDomainsRequestOrderBy `json:"-"` + + FunctionID string `json:"-"` +} + +func (s *API) ListDomains(req *ListDomainsRequest, opts ...scw.RequestOption) (*ListDomainsResponse, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + defaultPageSize, exist := s.client.GetDefaultPageSize() + if (req.PageSize == nil || *req.PageSize == 0) && exist { + req.PageSize = &defaultPageSize + } + + query := url.Values{} + parameter.AddToQuery(query, "page", req.Page) + parameter.AddToQuery(query, "page_size", req.PageSize) + parameter.AddToQuery(query, "order_by", req.OrderBy) + parameter.AddToQuery(query, "function_id", req.FunctionID) + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "GET", + Path: "/functions/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains", + Query: query, + Headers: http.Header{}, + } + + var resp ListDomainsResponse + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type GetDomainRequest struct { + Region scw.Region `json:"-"` + + DomainID string `json:"-"` +} + +func (s *API) GetDomain(req *GetDomainRequest, opts ...scw.RequestOption) (*Domain, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + if fmt.Sprint(req.DomainID) == "" { + return nil, errors.New("field DomainID cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "GET", + Path: "/functions/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains/" + fmt.Sprint(req.DomainID) + "", + Headers: http.Header{}, + } + + var resp Domain + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type CreateDomainRequest struct { + Region scw.Region `json:"-"` + + Hostname string `json:"hostname"` + + FunctionID string `json:"function_id"` +} + +func (s *API) CreateDomain(req *CreateDomainRequest, opts ...scw.RequestOption) (*Domain, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "POST", + Path: "/functions/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains", + Headers: http.Header{}, + } + + err = scwReq.SetBody(req) + if err != nil { + return nil, err + } + + var resp Domain + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + +type DeleteDomainRequest struct { + Region scw.Region `json:"-"` + + DomainID string `json:"-"` +} + +func (s *API) DeleteDomain(req *DeleteDomainRequest, opts ...scw.RequestOption) (*Domain, error) { + var err error + + if req.Region == "" { + defaultRegion, _ := s.client.GetDefaultRegion() + req.Region = defaultRegion + } + + if fmt.Sprint(req.Region) == "" { + return nil, errors.New("field Region cannot be empty in request") + } + + if fmt.Sprint(req.DomainID) == "" { + return nil, errors.New("field DomainID cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "DELETE", + Path: "/functions/v1beta1/regions/" + fmt.Sprint(req.Region) + "/domains/" + fmt.Sprint(req.DomainID) + "", + Headers: http.Header{}, + } + + var resp Domain + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + type IssueJWTRequest struct { Region scw.Region `json:"-"` @@ -1653,3 +1920,22 @@ func (r *ListLogsResponse) UnsafeAppend(res interface{}) (uint32, error) { r.TotalCount += uint32(len(results.Logs)) return uint32(len(results.Logs)), nil } + +// UnsafeGetTotalCount should not be used +// Internal usage only +func (r *ListDomainsResponse) UnsafeGetTotalCount() uint32 { + return r.TotalCount +} + +// UnsafeAppend should not be used +// Internal usage only +func (r *ListDomainsResponse) UnsafeAppend(res interface{}) (uint32, error) { + results, ok := res.(*ListDomainsResponse) + if !ok { + return 0, errors.New("%T type cannot be appended to type %T", res, r) + } + + r.Domains = append(r.Domains, results.Domains...) + r.TotalCount += uint32(len(results.Domains)) + return uint32(len(results.Domains)), nil +} diff --git a/api/lb/v1/lb_sdk.go b/api/lb/v1/lb_sdk.go index f2400ab99..39440810b 100644 --- a/api/lb/v1/lb_sdk.go +++ b/api/lb/v1/lb_sdk.go @@ -982,6 +982,18 @@ type ACLMatch struct { Invert bool `json:"invert"` } +// ACLSpec: acl spec +type ACLSpec struct { + // Name: name of your ACL resource + Name string `json:"name"` + // Action: action to undertake when an ACL filter matches + Action *ACLAction `json:"action"` + // Match: the ACL match rule. At least `ip_subnet` or `http_filter` and `http_filter_value` are required + Match *ACLMatch `json:"match"` + // Index: order between your Acls (ascending order, 0 is first acl executed) + Index int32 `json:"index"` +} + // Backend: backend type Backend struct { ID string `json:"id"` @@ -1536,6 +1548,14 @@ type RouteMatch struct { Sni *string `json:"sni"` } +// SetACLsResponse: set acls response +type SetACLsResponse struct { + // ACLs: list of ACLs object (see ACL object description) + ACLs []*ACL `json:"acls"` + // TotalCount: the total number of items + TotalCount uint32 `json:"total_count"` +} + // Subscriber: subscriber type Subscriber struct { // ID: subscriber ID @@ -6498,6 +6518,51 @@ func (s *ZonedAPI) DeleteACL(req *ZonedAPIDeleteACLRequest, opts ...scw.RequestO return nil } +type ZonedAPISetACLsRequest struct { + Zone scw.Zone `json:"-"` + // FrontendID: the Frontend to change ACL to + FrontendID string `json:"-"` + // ACLs: array of ACLs to erease the existing ACLs + ACLs []*ACLSpec `json:"acls"` +} + +// SetACLs: set all ACLs for a given frontend +func (s *ZonedAPI) SetACLs(req *ZonedAPISetACLsRequest, opts ...scw.RequestOption) (*SetACLsResponse, error) { + var err error + + if req.Zone == "" { + defaultZone, _ := s.client.GetDefaultZone() + req.Zone = defaultZone + } + + if fmt.Sprint(req.Zone) == "" { + return nil, errors.New("field Zone cannot be empty in request") + } + + if fmt.Sprint(req.FrontendID) == "" { + return nil, errors.New("field FrontendID cannot be empty in request") + } + + scwReq := &scw.ScalewayRequest{ + Method: "PUT", + Path: "/lb/v1/zones/" + fmt.Sprint(req.Zone) + "/frontends/" + fmt.Sprint(req.FrontendID) + "/acls", + Headers: http.Header{}, + } + + err = scwReq.SetBody(req) + if err != nil { + return nil, err + } + + var resp SetACLsResponse + + err = s.client.Do(scwReq, &resp, opts...) + if err != nil { + return nil, err + } + return &resp, nil +} + type ZonedAPICreateCertificateRequest struct { Zone scw.Zone `json:"-"` // LBID: load balancer ID From 398ff0564db142bd74acd29733c92b61d54cef0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Thu, 27 Jan 2022 11:10:54 +0100 Subject: [PATCH 2/2] Fix --- api/baremetal/v1/baremetal_sdk.go | 208 ---------------------- api/domain/v2beta1/domain_sdk.go | 30 ++-- api/flexibleip/v1alpha1/flexibleip_sdk.go | 2 - api/lb/v1/lb_sdk.go | 65 ------- 4 files changed, 17 insertions(+), 288 deletions(-) diff --git a/api/baremetal/v1/baremetal_sdk.go b/api/baremetal/v1/baremetal_sdk.go index 9c7857e9c..9e329781a 100644 --- a/api/baremetal/v1/baremetal_sdk.go +++ b/api/baremetal/v1/baremetal_sdk.go @@ -183,38 +183,6 @@ func (enum *ListServersRequestOrderBy) UnmarshalJSON(data []byte) error { return nil } -type ListSettingsRequestOrderBy string - -const ( - // ListSettingsRequestOrderByCreatedAtAsc is [insert doc]. - ListSettingsRequestOrderByCreatedAtAsc = ListSettingsRequestOrderBy("created_at_asc") - // ListSettingsRequestOrderByCreatedAtDesc is [insert doc]. - ListSettingsRequestOrderByCreatedAtDesc = ListSettingsRequestOrderBy("created_at_desc") -) - -func (enum ListSettingsRequestOrderBy) String() string { - if enum == "" { - // return default value if empty - return "created_at_asc" - } - return string(enum) -} - -func (enum ListSettingsRequestOrderBy) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *ListSettingsRequestOrderBy) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = ListSettingsRequestOrderBy(ListSettingsRequestOrderBy(tmp).String()) - return nil -} - type OfferStock string const ( @@ -477,38 +445,6 @@ func (enum *ServerStatus) UnmarshalJSON(data []byte) error { return nil } -type SettingType string - -const ( - // SettingTypeUnknown is [insert doc]. - SettingTypeUnknown = SettingType("unknown") - // SettingTypeSMTP is [insert doc]. - SettingTypeSMTP = SettingType("smtp") -) - -func (enum SettingType) String() string { - if enum == "" { - // return default value if empty - return "unknown" - } - return string(enum) -} - -func (enum SettingType) MarshalJSON() ([]byte, error) { - return []byte(fmt.Sprintf(`"%s"`, enum)), nil -} - -func (enum *SettingType) UnmarshalJSON(data []byte) error { - tmp := "" - - if err := json.Unmarshal(data, &tmp); err != nil { - return err - } - - *enum = SettingType(SettingType(tmp).String()) - return nil -} - // BMCAccess: bmc access type BMCAccess struct { // URL: URL to access to the server console @@ -623,14 +559,6 @@ type ListServersResponse struct { Servers []*Server `json:"servers"` } -// ListSettingsResponse: list settings response -type ListSettingsResponse struct { - // TotalCount: total count of matching sttings - TotalCount uint32 `json:"total_count"` - // Settings: settings that match filters - Settings []*Setting `json:"settings"` -} - // Memory: memory type Memory struct { Capacity scw.Size `json:"capacity"` @@ -842,20 +770,6 @@ type ServerOption struct { Manageable bool `json:"manageable"` } -// Setting: setting -type Setting struct { - // ID: ID of the setting - ID string `json:"id"` - // Type: type of the setting - // - // Default value: unknown - Type SettingType `json:"type"` - // ProjectID: ID of the project ID - ProjectID string `json:"project_id"` - // Enabled: the setting is enable or disable - Enabled bool `json:"enabled"` -} - // Service API type ListServersRequest struct { @@ -1892,109 +1806,6 @@ func (s *API) ListOptions(req *ListOptionsRequest, opts ...scw.RequestOption) (* return &resp, nil } -type ListSettingsRequest struct { - Zone scw.Zone `json:"-"` - // Page: page number - Page *int32 `json:"-"` - // PageSize: set the maximum list size - PageSize *uint32 `json:"-"` - // OrderBy: order the response - // - // Default value: created_at_asc - OrderBy ListSettingsRequestOrderBy `json:"-"` - // ProjectID: ID of the project - ProjectID *string `json:"-"` -} - -// ListSettings: list all settings -// -// Return all settings for a project ID. -func (s *API) ListSettings(req *ListSettingsRequest, opts ...scw.RequestOption) (*ListSettingsResponse, error) { - var err error - - if req.Zone == "" { - defaultZone, _ := s.client.GetDefaultZone() - req.Zone = defaultZone - } - - defaultPageSize, exist := s.client.GetDefaultPageSize() - if (req.PageSize == nil || *req.PageSize == 0) && exist { - req.PageSize = &defaultPageSize - } - - query := url.Values{} - parameter.AddToQuery(query, "page", req.Page) - parameter.AddToQuery(query, "page_size", req.PageSize) - parameter.AddToQuery(query, "order_by", req.OrderBy) - parameter.AddToQuery(query, "project_id", req.ProjectID) - - if fmt.Sprint(req.Zone) == "" { - return nil, errors.New("field Zone cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "GET", - Path: "/baremetal/v1/zones/" + fmt.Sprint(req.Zone) + "/settings", - Query: query, - Headers: http.Header{}, - } - - var resp ListSettingsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - -type UpdateSettingRequest struct { - Zone scw.Zone `json:"-"` - // SettingID: ID of the setting - SettingID string `json:"-"` - // Enabled: enable/Disable the setting - Enabled *bool `json:"enabled"` -} - -// UpdateSetting: update setting -// -// Update a setting for a project ID (enable or disable). -func (s *API) UpdateSetting(req *UpdateSettingRequest, opts ...scw.RequestOption) (*Setting, error) { - var err error - - if req.Zone == "" { - defaultZone, _ := s.client.GetDefaultZone() - req.Zone = defaultZone - } - - if fmt.Sprint(req.Zone) == "" { - return nil, errors.New("field Zone cannot be empty in request") - } - - if fmt.Sprint(req.SettingID) == "" { - return nil, errors.New("field SettingID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PATCH", - Path: "/baremetal/v1/zones/" + fmt.Sprint(req.Zone) + "/settings/" + fmt.Sprint(req.SettingID) + "", - Headers: http.Header{}, - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp Setting - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - type ListOSRequest struct { Zone scw.Zone `json:"-"` // Page: page number @@ -2162,25 +1973,6 @@ func (r *ListOptionsResponse) UnsafeAppend(res interface{}) (uint32, error) { return uint32(len(results.Options)), nil } -// UnsafeGetTotalCount should not be used -// Internal usage only -func (r *ListSettingsResponse) UnsafeGetTotalCount() uint32 { - return r.TotalCount -} - -// UnsafeAppend should not be used -// Internal usage only -func (r *ListSettingsResponse) UnsafeAppend(res interface{}) (uint32, error) { - results, ok := res.(*ListSettingsResponse) - if !ok { - return 0, errors.New("%T type cannot be appended to type %T", res, r) - } - - r.Settings = append(r.Settings, results.Settings...) - r.TotalCount += uint32(len(results.Settings)) - return uint32(len(results.Settings)), nil -} - // UnsafeGetTotalCount should not be used // Internal usage only func (r *ListOSResponse) UnsafeGetTotalCount() uint32 { diff --git a/api/domain/v2beta1/domain_sdk.go b/api/domain/v2beta1/domain_sdk.go index 38f8c5f93..516016ce0 100644 --- a/api/domain/v2beta1/domain_sdk.go +++ b/api/domain/v2beta1/domain_sdk.go @@ -1456,7 +1456,7 @@ type NewContact struct { } type OrderResponse struct { - Domains []string `json:"domains"` + Domain string `json:"domain"` OrganizationID string `json:"organization_id"` @@ -2729,8 +2729,8 @@ func (s *RegistrarAPI) ListTasks(req *RegistrarAPIListTasksRequest, opts ...scw. return &resp, nil } -type RegistrarAPIBuyDomainsRequest struct { - Domains []string `json:"domains"` +type RegistrarAPIBuyDomainRequest struct { + Domain string `json:"domain"` DurationInYears uint32 `json:"duration_in_years"` @@ -2755,12 +2755,12 @@ type RegistrarAPIBuyDomainsRequest struct { TechnicalContact *NewContact `json:"technical_contact,omitempty"` } -// BuyDomains: buy one or more domains +// BuyDomain: buy a domain // -// Request the registration of domain names. +// Request the registration of a domain name. // You can provide an already existing domain's contact or a new contact. // -func (s *RegistrarAPI) BuyDomains(req *RegistrarAPIBuyDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { +func (s *RegistrarAPI) BuyDomain(req *RegistrarAPIBuyDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error if req.ProjectID == "" { @@ -2770,7 +2770,7 @@ func (s *RegistrarAPI) BuyDomains(req *RegistrarAPIBuyDomainsRequest, opts ...sc scwReq := &scw.ScalewayRequest{ Method: "POST", - Path: "/domain/v2beta1/buy-domains", + Path: "/domain/v2beta1/domains", Headers: http.Header{}, } @@ -2788,24 +2788,28 @@ func (s *RegistrarAPI) BuyDomains(req *RegistrarAPIBuyDomainsRequest, opts ...sc return &resp, nil } -type RegistrarAPIRenewDomainsRequest struct { - Domains []string `json:"domains"` +type RegistrarAPIRenewDomainRequest struct { + Domain string `json:"-"` DurationInYears uint32 `json:"duration_in_years"` ForceLateRenewal *bool `json:"force_late_renewal"` } -// RenewDomains: renew one or more domains +// RenewDomain: renew a domain // -// Request the renewal of domain names. +// Request the renewal of a domain name. // -func (s *RegistrarAPI) RenewDomains(req *RegistrarAPIRenewDomainsRequest, opts ...scw.RequestOption) (*OrderResponse, error) { +func (s *RegistrarAPI) RenewDomain(req *RegistrarAPIRenewDomainRequest, opts ...scw.RequestOption) (*OrderResponse, error) { var err error + if fmt.Sprint(req.Domain) == "" { + return nil, errors.New("field Domain cannot be empty in request") + } + scwReq := &scw.ScalewayRequest{ Method: "POST", - Path: "/domain/v2beta1/renew-domains", + Path: "/domain/v2beta1/domains/" + fmt.Sprint(req.Domain) + "/renew", Headers: http.Header{}, } diff --git a/api/flexibleip/v1alpha1/flexibleip_sdk.go b/api/flexibleip/v1alpha1/flexibleip_sdk.go index efbf61def..7f58b742d 100644 --- a/api/flexibleip/v1alpha1/flexibleip_sdk.go +++ b/api/flexibleip/v1alpha1/flexibleip_sdk.go @@ -295,8 +295,6 @@ type CreateFlexibleIPRequest struct { ServerID *string `json:"server_id"` // Reverse: reverse DNS value Reverse *string `json:"reverse"` - // IsIPv6: if true, creates a Flexible IP with an ipv6 address - IsIPv6 bool `json:"is_ipv6"` } // CreateFlexibleIP: create a Flexible IP diff --git a/api/lb/v1/lb_sdk.go b/api/lb/v1/lb_sdk.go index 39440810b..f2400ab99 100644 --- a/api/lb/v1/lb_sdk.go +++ b/api/lb/v1/lb_sdk.go @@ -982,18 +982,6 @@ type ACLMatch struct { Invert bool `json:"invert"` } -// ACLSpec: acl spec -type ACLSpec struct { - // Name: name of your ACL resource - Name string `json:"name"` - // Action: action to undertake when an ACL filter matches - Action *ACLAction `json:"action"` - // Match: the ACL match rule. At least `ip_subnet` or `http_filter` and `http_filter_value` are required - Match *ACLMatch `json:"match"` - // Index: order between your Acls (ascending order, 0 is first acl executed) - Index int32 `json:"index"` -} - // Backend: backend type Backend struct { ID string `json:"id"` @@ -1548,14 +1536,6 @@ type RouteMatch struct { Sni *string `json:"sni"` } -// SetACLsResponse: set acls response -type SetACLsResponse struct { - // ACLs: list of ACLs object (see ACL object description) - ACLs []*ACL `json:"acls"` - // TotalCount: the total number of items - TotalCount uint32 `json:"total_count"` -} - // Subscriber: subscriber type Subscriber struct { // ID: subscriber ID @@ -6518,51 +6498,6 @@ func (s *ZonedAPI) DeleteACL(req *ZonedAPIDeleteACLRequest, opts ...scw.RequestO return nil } -type ZonedAPISetACLsRequest struct { - Zone scw.Zone `json:"-"` - // FrontendID: the Frontend to change ACL to - FrontendID string `json:"-"` - // ACLs: array of ACLs to erease the existing ACLs - ACLs []*ACLSpec `json:"acls"` -} - -// SetACLs: set all ACLs for a given frontend -func (s *ZonedAPI) SetACLs(req *ZonedAPISetACLsRequest, opts ...scw.RequestOption) (*SetACLsResponse, error) { - var err error - - if req.Zone == "" { - defaultZone, _ := s.client.GetDefaultZone() - req.Zone = defaultZone - } - - if fmt.Sprint(req.Zone) == "" { - return nil, errors.New("field Zone cannot be empty in request") - } - - if fmt.Sprint(req.FrontendID) == "" { - return nil, errors.New("field FrontendID cannot be empty in request") - } - - scwReq := &scw.ScalewayRequest{ - Method: "PUT", - Path: "/lb/v1/zones/" + fmt.Sprint(req.Zone) + "/frontends/" + fmt.Sprint(req.FrontendID) + "/acls", - Headers: http.Header{}, - } - - err = scwReq.SetBody(req) - if err != nil { - return nil, err - } - - var resp SetACLsResponse - - err = s.client.Do(scwReq, &resp, opts...) - if err != nil { - return nil, err - } - return &resp, nil -} - type ZonedAPICreateCertificateRequest struct { Zone scw.Zone `json:"-"` // LBID: load balancer ID