import {z} from 'zod' export type GetApiApiV1ProjectsProjectIdDcDcClustersArgs = {project_id: string, dc: string}; export type GetApiApiV1ProjectsProjectIdDcDcClustersOptions = {baseUrl: string, apiKey?: string | undefined, fetch?: typeof fetch | undefined}; export const auditLoggingSettings = z.object({enabled: z.boolean().optional()}); export const uID = z.string(); export const globalSecretKeySelector = z.object({apiVersion: z.string().optional(), fieldPath: z.string().optional(), key: z.string().optional(), kind: z.string().optional(), name: z.string().optional(), namespace: z.string().optional(), resourceVersion: z.string().optional(), uid: uID.optional()}); export const alibabaCloudSpec = z.object({accessKeyId: z.string().optional(), accessKeySecret: z.string().optional(), credentialsReference: globalSecretKeySelector.optional()}); export const anexiaCloudSpec = z.object({credentialsReference: globalSecretKeySelector.optional(), token: z.string().optional()}); export const aWSCloudSpec = z.object({accessKeyId: z.string().optional(), credentialsReference: globalSecretKeySelector.optional(), instanceProfileName: z.string().optional(), roleARN: z.string().optional(), roleName: z.string().optional(), routeTableId: z.string().optional(), secretAccessKey: z.string().optional(), securityGroupID: z.string().optional(), vpcId: z.string().optional()}); export const lBSKU = z.string(); export const azureCloudSpec = z.object({assignAvailabilitySet: z.boolean().optional(), availabilitySet: z.string().optional(), clientID: z.string().optional(), clientSecret: z.string().optional(), credentialsReference: globalSecretKeySelector.optional(), loadBalancerSKU: lBSKU.optional(), resourceGroup: z.string().optional(), routeTable: z.string().optional(), securityGroup: z.string().optional(), subnet: z.string().optional(), subscriptionID: z.string().optional(), tenantID: z.string().optional(), vnet: z.string().optional(), vnetResourceGroup: z.string().optional()}); export const bringYourOwnCloudSpec = z.object({}); export const digitaloceanCloudSpec = z.object({credentialsReference: globalSecretKeySelector.optional(), token: z.string().optional()}); export const fakeCloudSpec = z.object({token: z.string().optional()}); export const gCPCloudSpec = z.object({credentialsReference: globalSecretKeySelector.optional(), network: z.string().optional(), serviceAccount: z.string().optional(), subnetwork: z.string().optional()}); export const hetznerCloudSpec = z.object({credentialsReference: globalSecretKeySelector.optional(), network: z.string().optional(), token: z.string().optional()}); export const kubevirtCloudSpec = z.object({credentialsReference: globalSecretKeySelector.optional(), kubeconfig: z.string().optional()}); export const openstackCloudSpec = z.object({applicationCredentialID: z.string().optional(), applicationCredentialSecret: z.string().optional(), credentialsReference: globalSecretKeySelector.optional(), domain: z.string().optional(), floatingIpPool: z.string().optional(), network: z.string().optional(), password: z.string().optional(), routerID: z.string().optional(), securityGroups: z.string().optional(), subnetID: z.string().optional(), tenant: z.string().optional(), tenantID: z.string().optional(), token: z.string().optional(), useOctavia: z.boolean().optional(), useToken: z.boolean().optional(), username: z.string().optional()}); export const packetCloudSpec = z.object({apiKey: z.string().optional(), billingCycle: z.string().optional(), credentialsReference: globalSecretKeySelector.optional(), projectID: z.string().optional()}); export const vSphereCredentials = z.object({password: z.string().optional(), username: z.string().optional()}); export const vSphereCloudSpec = z.object({credentialsReference: globalSecretKeySelector.optional(), datastore: z.string().optional(), datastoreCluster: z.string().optional(), folder: z.string().optional(), infraManagementUser: vSphereCredentials.optional(), password: z.string().optional(), resourcePool: z.string().optional(), storagePolicy: z.string().optional(), username: z.string().optional(), vmNetName: z.string().optional()}); export const cloudSpec = z.object({alibaba: alibabaCloudSpec.optional(), anexia: anexiaCloudSpec.optional(), aws: aWSCloudSpec.optional(), azure: azureCloudSpec.optional(), bringyourown: bringYourOwnCloudSpec.optional(), dc: z.string().optional(), digitalocean: digitaloceanCloudSpec.optional(), fake: fakeCloudSpec.optional(), gcp: gCPCloudSpec.optional(), hetzner: hetznerCloudSpec.optional(), kubevirt: kubevirtCloudSpec.optional(), openstack: openstackCloudSpec.optional(), packet: packetCloudSpec.optional(), vsphere: vSphereCloudSpec.optional()}); export const iPVSConfiguration = z.object({strictArp: z.boolean().optional()}); export const networkRanges = z.object({cidrBlocks: z.array(z.string()).optional()}); export const clusterNetworkingConfig = z.object({dnsDomain: z.string().optional(), ipvs: iPVSConfiguration.optional(), konnectivityEnabled: z.boolean().optional(), nodeLocalDNSCacheEnabled: z.boolean().optional(), pods: networkRanges.optional(), proxyMode: z.string().optional(), services: networkRanges.optional()}); export const machineNetworkingConfig = z.object({cidr: z.string().optional(), dnsServers: z.array(z.string()).optional(), gateway: z.string().optional()}); export const quantity = z.object({}); export const resourceList = z.record(z.string(), quantity); export const resourceRequirements = z.object({limits: resourceList.optional(), requests: resourceList.optional()}); export const mLASettings = z.object({loggingEnabled: z.boolean().optional(), loggingResources: resourceRequirements.optional(), monitoringEnabled: z.boolean().optional(), monitoringResources: resourceRequirements.optional()}); export const oIDCSettings = z.object({clientId: z.string().optional(), clientSecret: z.string().optional(), extraScopes: z.string().optional(), groupsClaim: z.string().optional(), issuerUrl: z.string().optional(), requiredClaim: z.string().optional(), usernameClaim: z.string().optional()}); export const oPAIntegrationSettings = z.object({enabled: z.boolean().optional(), experimentalEnableMutation: z.boolean().optional(), webhookTimeoutSeconds: z.number().int().optional()}); export const serviceAccountSettings = z.object({apiAudiences: z.array(z.string()).optional(), issuer: z.string().optional(), tokenVolumeProjectionEnabled: z.boolean().optional()}); export const updateWindow = z.object({length: z.string().optional(), start: z.string().optional()}); export const semver = z.object({}); export const clusterSpec = z.object({admissionPlugins: z.array(z.string()).optional(), auditLogging: auditLoggingSettings.optional(), cloud: cloudSpec.optional(), clusterNetwork: clusterNetworkingConfig.optional(), containerRuntime: z.string().optional(), enableUserSSHKeyAgent: z.boolean().optional(), machineNetworks: z.array(machineNetworkingConfig).optional(), mla: mLASettings.optional(), oidc: oIDCSettings.optional(), opaIntegration: oPAIntegrationSettings.optional(), podNodeSelectorAdmissionPluginConfig: z.record(z.string(), z.string()).optional(), serviceAccount: serviceAccountSettings.optional(), updateWindow: updateWindow.optional(), usePodNodeSelectorAdmissionPlugin: z.boolean().optional(), usePodSecurityPolicyAdmissionPlugin: z.boolean().optional(), version: semver.optional()}); export const externalCCMMigrationStatus = z.string(); export const clusterStatus = z.object({externalCCMMigration: externalCCMMigrationStatus.optional(), url: z.string().optional(), version: semver.optional()}); export const cluster = z.object({annotations: z.record(z.string(), z.string()).optional(), creationTimestamp: z.string().optional(), credential: z.string().optional(), deletionTimestamp: z.string().optional(), id: z.string().optional(), inheritedLabels: z.record(z.string(), z.string()).optional(), labels: z.record(z.string(), z.string()).optional(), name: z.string().optional(), spec: clusterSpec.optional(), status: clusterStatus.optional(), type: z.string().optional()}); export const clusterList = z.array(cluster); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Lists clusters for the specified project and data center. * * GET /api/v1/projects/{project_id}/dc/{dc}/clusters */ export const getApiApiV1ProjectsProjectIdDcDcClusters = async (args: GetApiApiV1ProjectsProjectIdDcDcClustersArgs, options: GetApiApiV1ProjectsProjectIdDcDcClustersOptions) => { const {baseUrl, fetch: fetchFn = fetch, apiKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (apiKey !== undefined) headers.set("Authorization", apiKey) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/projects/${encodeURIComponent(String(args.project_id))}/dc/${encodeURIComponent(String(args.dc))}/clusters${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(clusterList, await res.json()) };