Skip to content

Commit d650388

Browse files
authored
feat(product_catalog): add new instance properties + status (scaleway#2552)
1 parent 63f34e3 commit d650388

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

api/product_catalog/v2alpha1/product_catalog_sdk.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,57 @@ func (enum *PublicCatalogProductPropertiesHardwareCPUArch) UnmarshalJSON(data []
8787
return nil
8888
}
8989

90+
type PublicCatalogProductStatus string
91+
92+
const (
93+
// Unknown status.
94+
PublicCatalogProductStatusUnknownStatus = PublicCatalogProductStatus("unknown_status")
95+
// The product is available in Public Beta.
96+
PublicCatalogProductStatusPublicBeta = PublicCatalogProductStatus("public_beta")
97+
// The product is available in Preview mode.
98+
PublicCatalogProductStatusPreview = PublicCatalogProductStatus("preview")
99+
// The product is generally available.
100+
PublicCatalogProductStatusGeneralAvailability = PublicCatalogProductStatus("general_availability")
101+
// The product must not be used for new deployments.
102+
PublicCatalogProductStatusEndOfDeployment = PublicCatalogProductStatus("end_of_deployment")
103+
// There is no longer any commercial support for this product.
104+
PublicCatalogProductStatusEndOfSupport = PublicCatalogProductStatus("end_of_support")
105+
)
106+
107+
func (enum PublicCatalogProductStatus) String() string {
108+
if enum == "" {
109+
// return default value if empty
110+
return string(PublicCatalogProductStatusUnknownStatus)
111+
}
112+
return string(enum)
113+
}
114+
115+
func (enum PublicCatalogProductStatus) Values() []PublicCatalogProductStatus {
116+
return []PublicCatalogProductStatus{
117+
"unknown_status",
118+
"public_beta",
119+
"preview",
120+
"general_availability",
121+
"end_of_deployment",
122+
"end_of_support",
123+
}
124+
}
125+
126+
func (enum PublicCatalogProductStatus) MarshalJSON() ([]byte, error) {
127+
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
128+
}
129+
130+
func (enum *PublicCatalogProductStatus) UnmarshalJSON(data []byte) error {
131+
tmp := ""
132+
133+
if err := json.Unmarshal(data, &tmp); err != nil {
134+
return err
135+
}
136+
137+
*enum = PublicCatalogProductStatus(PublicCatalogProductStatus(tmp).String())
138+
return nil
139+
}
140+
90141
type PublicCatalogProductUnitOfMeasureCountableUnit string
91142

92143
const (
@@ -334,6 +385,12 @@ type PublicCatalogProductPropertiesHardware struct {
334385
type PublicCatalogProductPropertiesInstance struct {
335386
// Range: the range of the Instance server.
336387
Range string `json:"range"`
388+
389+
// OfferID: the offer ID of the Instance server.
390+
OfferID string `json:"offer_id"`
391+
392+
// RecommendedReplacementOfferIDs: the recommended replacement offer IDs of the Instance server.
393+
RecommendedReplacementOfferIDs []string `json:"recommended_replacement_offer_ids"`
337394
}
338395

339396
// PublicCatalogProductEnvironmentalImpactEstimation: public catalog product environmental impact estimation.
@@ -429,6 +486,13 @@ type PublicCatalogProduct struct {
429486

430487
// UnitOfMeasure: the unit of measure of the product.
431488
UnitOfMeasure *PublicCatalogProductUnitOfMeasure `json:"unit_of_measure"`
489+
490+
// Status: the status of the product.
491+
// Default value: unknown_status
492+
Status PublicCatalogProductStatus `json:"status"`
493+
494+
// EndOfLifeAt: the end of life date of the product.
495+
EndOfLifeAt *time.Time `json:"end_of_life_at"`
432496
}
433497

434498
// ListPublicCatalogProductsResponse: list public catalog products response.

0 commit comments

Comments
 (0)