fix(scripts/apitypings): force health.Message and health.Severity to correct types (#11043)

* Force typegen types for some fields of derp health report
* Explicitly allocate slices for RegionReport.{Errors,Warnings} to avoid nulls in API response
This commit is contained in:
Cian Johnston 2023-12-05 16:31:48 +00:00 committed by GitHub
parent a235644046
commit 2e4e0b2d2c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 18 deletions

View File

@ -54,7 +54,7 @@ func (*AGPLWorkspaceProxiesFetchUpdater) Update(context.Context) error {
func (r *WorkspaceProxyReport) Run(ctx context.Context, opts *WorkspaceProxyReportOptions) { func (r *WorkspaceProxyReport) Run(ctx context.Context, opts *WorkspaceProxyReportOptions) {
r.Healthy = true r.Healthy = true
r.Severity = health.SeverityOK r.Severity = health.SeverityOK
r.Warnings = []health.Message{} r.Warnings = make([]health.Message, 0)
r.Dismissed = opts.Dismissed r.Dismissed = opts.Dismissed
if opts.WorkspaceProxiesFetchUpdater == nil { if opts.WorkspaceProxiesFetchUpdater == nil {

View File

@ -945,6 +945,12 @@ func convertProxy(p database.WorkspaceProxy, status proxyhealth.ProxyStatus) cod
if status.Status == "" { if status.Status == "" {
status.Status = proxyhealth.Unknown status.Status = proxyhealth.Unknown
} }
if status.Report.Errors == nil {
status.Report.Errors = make([]string, 0)
}
if status.Report.Warnings == nil {
status.Report.Warnings = make([]string, 0)
}
return codersdk.WorkspaceProxy{ return codersdk.WorkspaceProxy{
Region: convertRegion(p, status), Region: convertRegion(p, status),
DerpEnabled: p.DerpEnabled, DerpEnabled: p.DerpEnabled,

View File

@ -867,10 +867,14 @@ func (g *Generator) typescriptType(ty types.Type) (TypescriptType, error) {
return TypescriptType{ValueType: "Record<string, string>"}, nil return TypescriptType{ValueType: "Record<string, string>"}, nil
case "github.com/coder/coder/v2/cli/clibase.URL": case "github.com/coder/coder/v2/cli/clibase.URL":
return TypescriptType{ValueType: "string"}, nil return TypescriptType{ValueType: "string"}, nil
// XXX: For some reason, the type generator generates this as `any` // XXX: For some reason, the type generator generates these as `any`
// so explicitly specifying the correct generic TS type. // so explicitly specifying the correct generic TS type.
case "github.com/coder/coder/v2/codersdk.RegionsResponse[github.com/coder/coder/v2/codersdk.WorkspaceProxy]": case "github.com/coder/coder/v2/codersdk.RegionsResponse[github.com/coder/coder/v2/codersdk.WorkspaceProxy]":
return TypescriptType{ValueType: "RegionsResponse<WorkspaceProxy>"}, nil return TypescriptType{ValueType: "RegionsResponse<WorkspaceProxy>"}, nil
case "github.com/coder/coder/v2/coderd/healthcheck/health.Message":
return TypescriptType{ValueType: "HealthMessage"}, nil
case "github.com/coder/coder/v2/coderd/healthcheck/health.Severity":
return TypescriptType{ValueType: "HealthSeverity"}, nil
} }
// Some hard codes are a bit trickier. // Some hard codes are a bit trickier.

View File

@ -2257,11 +2257,8 @@ export const HealthSeveritys: HealthSeverity[] = ["error", "ok", "warning"];
// From derphealth/derp.go // From derphealth/derp.go
export interface DerphealthNodeReport { export interface DerphealthNodeReport {
readonly healthy: boolean; readonly healthy: boolean;
// This is likely an enum in an external package ("github.com/coder/coder/v2/coderd/healthcheck/health.Severity") readonly severity: HealthSeverity;
readonly severity: string; readonly warnings: HealthMessage[];
// Named type "github.com/coder/coder/v2/coderd/healthcheck/health.Message" unknown, using "any"
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type
readonly warnings: any[];
// Named type "tailscale.com/tailcfg.DERPNode" unknown, using "any" // Named type "tailscale.com/tailcfg.DERPNode" unknown, using "any"
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type // eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type
readonly node?: any; readonly node?: any;
@ -2281,11 +2278,8 @@ export interface DerphealthNodeReport {
// From derphealth/derp.go // From derphealth/derp.go
export interface DerphealthRegionReport { export interface DerphealthRegionReport {
readonly healthy: boolean; readonly healthy: boolean;
// This is likely an enum in an external package ("github.com/coder/coder/v2/coderd/healthcheck/health.Severity") readonly severity: HealthSeverity;
readonly severity: string; readonly warnings: HealthMessage[];
// Named type "github.com/coder/coder/v2/coderd/healthcheck/health.Message" unknown, using "any"
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type
readonly warnings: any[];
// Named type "tailscale.com/tailcfg.DERPRegion" unknown, using "any" // Named type "tailscale.com/tailcfg.DERPRegion" unknown, using "any"
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type // eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type
readonly region?: any; readonly region?: any;
@ -2296,11 +2290,8 @@ export interface DerphealthRegionReport {
// From derphealth/derp.go // From derphealth/derp.go
export interface DerphealthReport { export interface DerphealthReport {
readonly healthy: boolean; readonly healthy: boolean;
// This is likely an enum in an external package ("github.com/coder/coder/v2/coderd/healthcheck/health.Severity") readonly severity: HealthSeverity;
readonly severity: string; readonly warnings: HealthMessage[];
// Named type "github.com/coder/coder/v2/coderd/healthcheck/health.Message" unknown, using "any"
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- External type
readonly warnings: any[];
readonly dismissed: boolean; readonly dismissed: boolean;
readonly regions: Record<number, DerphealthRegionReport>; readonly regions: Record<number, DerphealthRegionReport>;
// Named type "tailscale.com/net/netcheck.Report" unknown, using "any" // Named type "tailscale.com/net/netcheck.Report" unknown, using "any"

View File

@ -131,7 +131,12 @@ export const DERPWarnings: Story = {
severity: "warning", severity: "warning",
derp: { derp: {
...MockHealth.derp, ...MockHealth.derp,
warnings: ["foobar"], warnings: [
{
message: "derp derp derp",
code: "EDERP01",
},
],
}, },
}, },
}, },