Skip to content

Commit bb0a853

Browse files
authored
feat(product_catalog): add new status filter to getCatalog (#2816)
1 parent 4a13859 commit bb0a853

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

api/product_catalog/v2alpha1/product_catalog_sdk.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,66 @@ func (enum *ListPublicCatalogProductsRequestProductType) UnmarshalJSON(data []by
9393
return nil
9494
}
9595

96+
type ListPublicCatalogProductsRequestStatus string
97+
98+
const (
99+
// Unknown status.
100+
ListPublicCatalogProductsRequestStatusUnknownStatus = ListPublicCatalogProductsRequestStatus("unknown_status")
101+
// The product is available in Public Beta.
102+
ListPublicCatalogProductsRequestStatusPublicBeta = ListPublicCatalogProductsRequestStatus("public_beta")
103+
// The product is available in Preview mode.
104+
ListPublicCatalogProductsRequestStatusPreview = ListPublicCatalogProductsRequestStatus("preview")
105+
// The product is generally available.
106+
ListPublicCatalogProductsRequestStatusGeneralAvailability = ListPublicCatalogProductsRequestStatus("general_availability")
107+
// The product must not be used for new deployments.
108+
ListPublicCatalogProductsRequestStatusEndOfDeployment = ListPublicCatalogProductsRequestStatus("end_of_deployment")
109+
// There is no longer any commercial support for this product.
110+
ListPublicCatalogProductsRequestStatusEndOfSupport = ListPublicCatalogProductsRequestStatus("end_of_support")
111+
// The product is not sold anymore but is still in use.
112+
ListPublicCatalogProductsRequestStatusEndOfSale = ListPublicCatalogProductsRequestStatus("end_of_sale")
113+
// The product is no longer supported or maintained.
114+
ListPublicCatalogProductsRequestStatusEndOfLife = ListPublicCatalogProductsRequestStatus("end_of_life")
115+
// The product is deprecated and is no longer accessible.
116+
ListPublicCatalogProductsRequestStatusRetired = ListPublicCatalogProductsRequestStatus("retired")
117+
)
118+
119+
func (enum ListPublicCatalogProductsRequestStatus) String() string {
120+
if enum == "" {
121+
// return default value if empty
122+
return string(ListPublicCatalogProductsRequestStatusUnknownStatus)
123+
}
124+
return string(enum)
125+
}
126+
127+
func (enum ListPublicCatalogProductsRequestStatus) Values() []ListPublicCatalogProductsRequestStatus {
128+
return []ListPublicCatalogProductsRequestStatus{
129+
"unknown_status",
130+
"public_beta",
131+
"preview",
132+
"general_availability",
133+
"end_of_deployment",
134+
"end_of_support",
135+
"end_of_sale",
136+
"end_of_life",
137+
"retired",
138+
}
139+
}
140+
141+
func (enum ListPublicCatalogProductsRequestStatus) MarshalJSON() ([]byte, error) {
142+
return []byte(fmt.Sprintf(`"%s"`, enum)), nil
143+
}
144+
145+
func (enum *ListPublicCatalogProductsRequestStatus) UnmarshalJSON(data []byte) error {
146+
tmp := ""
147+
148+
if err := json.Unmarshal(data, &tmp); err != nil {
149+
return err
150+
}
151+
152+
*enum = ListPublicCatalogProductsRequestStatus(ListPublicCatalogProductsRequestStatus(tmp).String())
153+
return nil
154+
}
155+
96156
type PublicCatalogProductPropertiesHardwareCPUArch string
97157

98158
const (
@@ -158,6 +218,10 @@ const (
158218
PublicCatalogProductStatusEndOfSupport = PublicCatalogProductStatus("end_of_support")
159219
// The product is not sold anymore but is still in use.
160220
PublicCatalogProductStatusEndOfSale = PublicCatalogProductStatus("end_of_sale")
221+
// The product is at its end of life.
222+
PublicCatalogProductStatusEndOfLife = PublicCatalogProductStatus("end_of_life")
223+
// The product is retired.
224+
PublicCatalogProductStatusRetired = PublicCatalogProductStatus("retired")
161225
)
162226

163227
func (enum PublicCatalogProductStatus) String() string {
@@ -177,6 +241,8 @@ func (enum PublicCatalogProductStatus) Values() []PublicCatalogProductStatus {
177241
"end_of_deployment",
178242
"end_of_support",
179243
"end_of_sale",
244+
"end_of_life",
245+
"retired",
180246
}
181247
}
182248

@@ -649,6 +715,9 @@ type PublicCatalogAPIListPublicCatalogProductsRequest struct {
649715
// Datacenter: filter products by datacenter.
650716
// Precisely one of Global, Region, Zone, Datacenter must be set.
651717
Datacenter *string `json:"datacenter,omitempty"`
718+
719+
// Status: the lists of filtered product status, if empty only products with status public_beta, general_availability, preview, end_of_deployment, end_of_support, end_of_sale, end_of_life or retired will be returned.
720+
Status []ListPublicCatalogProductsRequestStatus `json:"-"`
652721
}
653722

654723
type PublicCatalogAPI struct {
@@ -685,6 +754,7 @@ func (s *PublicCatalogAPI) ListPublicCatalogProducts(req *PublicCatalogAPIListPu
685754
parameter.AddToQuery(query, "page", req.Page)
686755
parameter.AddToQuery(query, "page_size", req.PageSize)
687756
parameter.AddToQuery(query, "product_types", req.ProductTypes)
757+
parameter.AddToQuery(query, "status", req.Status)
688758
parameter.AddToQuery(query, "global", req.Global)
689759
parameter.AddToQuery(query, "region", req.Region)
690760
parameter.AddToQuery(query, "zone", req.Zone)

0 commit comments

Comments
 (0)