diff --git a/src/gql/generated/types.ts b/src/gql/generated/types.ts index f257cc513c..7caacfa923 100644 --- a/src/gql/generated/types.ts +++ b/src/gql/generated/types.ts @@ -52,6 +52,12 @@ export type AbortInfo = { user: Scalars["String"]["output"]; }; +export enum AccessLevel { + Admin = "ADMIN", + Edit = "EDIT", + View = "VIEW", +} + /** * Annotation models the metadata that a user can add to a task. * It is used as a field within the Task type. @@ -382,7 +388,6 @@ export type Distro = { providerSettingsList: Array; setup: Scalars["String"]["output"]; setupAsSudo: Scalars["Boolean"]["output"]; - sshKey: Scalars["String"]["output"]; sshOptions: Array; user: Scalars["String"]["output"]; userSpawnAllowed: Scalars["Boolean"]["output"]; @@ -447,7 +452,6 @@ export type DistroInput = { providerSettingsList: Array; setup: Scalars["String"]["input"]; setupAsSudo: Scalars["Boolean"]["input"]; - sshKey: Scalars["String"]["input"]; sshOptions: Array; user: Scalars["String"]["input"]; userSpawnAllowed: Scalars["Boolean"]["input"]; @@ -501,6 +505,7 @@ export type EditSpawnHostInput = { publicKey?: InputMaybe; savePublicKey?: InputMaybe; servicePassword?: InputMaybe; + sleepSchedule?: InputMaybe; volume?: InputMaybe; }; @@ -701,6 +706,7 @@ export type Host = { persistentDnsName: Scalars["String"]["output"]; provider: Scalars["String"]["output"]; runningTask?: Maybe; + sleepSchedule?: Maybe; startedBy: Scalars["String"]["output"]; status: Scalars["String"]["output"]; tag: Scalars["String"]["output"]; @@ -1262,6 +1268,7 @@ export type MutationSchedulePatchTasksArgs = { export type MutationScheduleTasksArgs = { taskIds: Array; + versionId?: InputMaybe; }; export type MutationScheduleUndispatchedBaseTasksArgs = { @@ -1414,10 +1421,12 @@ export type ParsleyFilterInput = { /** ParsleySettings contains information about a user's settings for Parsley. */ export type ParsleySettings = { __typename?: "ParsleySettings"; + jumpToFailingLineEnabled: Scalars["Boolean"]["output"]; sectionsEnabled: Scalars["Boolean"]["output"]; }; export type ParsleySettingsInput = { + jumpToFailingLineEnabled?: InputMaybe; sectionsEnabled?: InputMaybe; }; @@ -1685,6 +1694,7 @@ export type Project = { isFavorite: Scalars["Boolean"]["output"]; manualPrTestingEnabled?: Maybe; notifyOnBuildFailure?: Maybe; + oldestAllowedMergeBase: Scalars["String"]["output"]; owner: Scalars["String"]["output"]; parsleyFilters?: Maybe>; patchTriggerAliases?: Maybe>; @@ -1821,6 +1831,7 @@ export type ProjectInput = { identifier?: InputMaybe; manualPrTestingEnabled?: InputMaybe; notifyOnBuildFailure?: InputMaybe; + oldestAllowedMergeBase?: InputMaybe; owner?: InputMaybe; parsleyFilters?: InputMaybe>; patchTriggerAliases?: InputMaybe>; @@ -1845,6 +1856,14 @@ export type ProjectInput = { workstationConfig?: InputMaybe; }; +export enum ProjectPermission { + Annotations = "ANNOTATIONS", + Logs = "LOGS", + Patches = "PATCHES", + Settings = "SETTINGS", + Tasks = "TASKS", +} + export type ProjectPermissions = { __typename?: "ProjectPermissions"; edit: Scalars["Boolean"]["output"]; @@ -1878,6 +1897,7 @@ export enum ProjectSettingsAccess { export type ProjectSettingsInput = { aliases?: InputMaybe>; githubWebhooksEnabled?: InputMaybe; + projectId?: InputMaybe; projectRef?: InputMaybe; subscriptions?: InputMaybe>; vars?: InputMaybe; @@ -2015,7 +2035,8 @@ export type QueryGithubProjectConflictsArgs = { }; export type QueryHasVersionArgs = { - id: Scalars["String"]["input"]; + id?: InputMaybe; + patchId?: InputMaybe; }; export type QueryHostArgs = { @@ -2051,7 +2072,8 @@ export type QueryMainlineCommitsArgs = { }; export type QueryPatchArgs = { - id: Scalars["String"]["input"]; + id?: InputMaybe; + patchId?: InputMaybe; }; export type QueryPodArgs = { @@ -2074,12 +2096,14 @@ export type QueryProjectSettingsArgs = { export type QueryRepoEventsArgs = { before?: InputMaybe; - id: Scalars["String"]["input"]; + id?: InputMaybe; limit?: InputMaybe; + repoId?: InputMaybe; }; export type QueryRepoSettingsArgs = { - id: Scalars["String"]["input"]; + id?: InputMaybe; + repoId?: InputMaybe; }; export type QueryTaskArgs = { @@ -2106,7 +2130,8 @@ export type QueryUserArgs = { }; export type QueryVersionArgs = { - id: Scalars["String"]["input"]; + id?: InputMaybe; + versionId?: InputMaybe; }; export type RepoCommitQueueParams = { @@ -2143,6 +2168,7 @@ export type RepoRef = { id: Scalars["String"]["output"]; manualPrTestingEnabled: Scalars["Boolean"]["output"]; notifyOnBuildFailure: Scalars["Boolean"]["output"]; + oldestAllowedMergeBase: Scalars["String"]["output"]; owner: Scalars["String"]["output"]; parsleyFilters?: Maybe>; patchTriggerAliases?: Maybe>; @@ -2186,6 +2212,7 @@ export type RepoRefInput = { id: Scalars["String"]["input"]; manualPrTestingEnabled?: InputMaybe; notifyOnBuildFailure?: InputMaybe; + oldestAllowedMergeBase?: InputMaybe; owner?: InputMaybe; parsleyFilters?: InputMaybe>; patchTriggerAliases?: InputMaybe>; @@ -2228,6 +2255,7 @@ export type RepoSettingsInput = { aliases?: InputMaybe>; githubWebhooksEnabled?: InputMaybe; projectRef?: InputMaybe; + repoId?: InputMaybe; subscriptions?: InputMaybe>; vars?: InputMaybe; }; @@ -2280,12 +2308,6 @@ export enum RoundingRule { Up = "UP", } -export type SshKey = { - __typename?: "SSHKey"; - location: Scalars["String"]["output"]; - name: Scalars["String"]["output"]; -}; - /** SaveDistroInput is the input to the saveDistro mutation. */ export type SaveDistroInput = { distro: DistroInput; @@ -2337,6 +2359,27 @@ export type SlackConfig = { name?: Maybe; }; +export type SleepSchedule = { + __typename?: "SleepSchedule"; + dailyStartTime: Scalars["String"]["output"]; + dailyStopTime: Scalars["String"]["output"]; + permanentlyExempt: Scalars["Boolean"]["output"]; + shouldKeepOff: Scalars["Boolean"]["output"]; + temporarilyExemptUntil?: Maybe; + timeZone: Scalars["String"]["output"]; + wholeWeekdaysOff: Array; +}; + +export type SleepScheduleInput = { + dailyStartTime: Scalars["String"]["input"]; + dailyStopTime: Scalars["String"]["input"]; + permanentlyExempt: Scalars["Boolean"]["input"]; + shouldKeepOff: Scalars["Boolean"]["input"]; + temporarilyExemptUntil?: InputMaybe; + timeZone: Scalars["String"]["input"]; + wholeWeekdaysOff: Array; +}; + export enum SortDirection { Asc = "ASC", Desc = "DESC", @@ -2376,6 +2419,7 @@ export type SpawnHostInput = { region: Scalars["String"]["input"]; savePublicKey: Scalars["Boolean"]["input"]; setUpScript?: InputMaybe; + sleepSchedule?: InputMaybe; spawnHostsStartedByTask?: InputMaybe; taskId?: InputMaybe; taskSync?: InputMaybe; @@ -2415,7 +2459,6 @@ export type SpruceConfig = { containerPools?: Maybe; githubOrgs: Array; jira?: Maybe; - keys: Array; providers?: Maybe; secretFields: Array; slack?: Maybe; @@ -5771,7 +5814,6 @@ export type DistroQuery = { providerSettingsList: Array; setup: string; setupAsSudo: boolean; - sshKey: string; sshOptions: Array; user: string; userSpawnAllowed: boolean; @@ -8189,7 +8231,6 @@ export type SpruceConfigQuery = { email?: string | null; host?: string | null; } | null; - keys: Array<{ __typename?: "SSHKey"; location: string; name: string }>; providers?: { __typename?: "CloudProviderConfig"; aws?: { diff --git a/src/gql/mocks/getSpruceConfig.ts b/src/gql/mocks/getSpruceConfig.ts index a30e9e3245..ccc03235e4 100644 --- a/src/gql/mocks/getSpruceConfig.ts +++ b/src/gql/mocks/getSpruceConfig.ts @@ -34,12 +34,6 @@ export const getSpruceConfigMock: ApolloMock< }, ], }, - keys: [ - { - name: "fake_key", - location: "/path/to/key", - }, - ], jira: { host: "jira.mongodb.org", __typename: "JiraConfig", diff --git a/src/gql/queries/distro.graphql b/src/gql/queries/distro.graphql index d3e3eed299..c21708bd7e 100644 --- a/src/gql/queries/distro.graphql +++ b/src/gql/queries/distro.graphql @@ -79,7 +79,6 @@ query Distro($distroId: String!) { providerSettingsList setup setupAsSudo - sshKey sshOptions user userSpawnAllowed diff --git a/src/gql/queries/spruce-config.graphql b/src/gql/queries/spruce-config.graphql index a5f57b7529..bb92028d79 100644 --- a/src/gql/queries/spruce-config.graphql +++ b/src/gql/queries/spruce-config.graphql @@ -14,10 +14,6 @@ query SpruceConfig { email host } - keys { - location - name - } providers { aws { maxVolumeSizePerUser diff --git a/src/pages/distroSettings/tabs/HostTab/HostTab.tsx b/src/pages/distroSettings/tabs/HostTab/HostTab.tsx index 6dbef28998..cfb0931d91 100644 --- a/src/pages/distroSettings/tabs/HostTab/HostTab.tsx +++ b/src/pages/distroSettings/tabs/HostTab/HostTab.tsx @@ -2,16 +2,12 @@ import { useMemo } from "react"; import { ValidateProps } from "components/SpruceForm"; import { DistroSettingsTabRoutes } from "constants/routes"; import { BootstrapMethod, CommunicationMethod } from "gql/generated/types"; -import { useSpruceConfig } from "hooks"; import { useDistroSettingsContext } from "pages/distroSettings/Context"; import { BaseTab } from "../BaseTab"; import { getFormSchema } from "./getFormSchema"; import { HostFormState, TabProps } from "./types"; export const HostTab: React.FC = ({ distroData, provider }) => { - const spruceConfig = useSpruceConfig(); - const sshKeys = spruceConfig?.keys; - const { getTab } = useDistroSettingsContext(); // @ts-expect-error - see TabState for details. const { formData }: { formData: HostFormState } = getTab( @@ -20,8 +16,8 @@ export const HostTab: React.FC = ({ distroData, provider }) => { const architecture = formData?.setup?.arch; const formSchema = useMemo( - () => getFormSchema({ architecture, provider, sshKeys }), - [architecture, provider, sshKeys], + () => getFormSchema({ architecture, provider }), + [architecture, provider], ); return ( diff --git a/src/pages/distroSettings/tabs/HostTab/getFormSchema.tsx b/src/pages/distroSettings/tabs/HostTab/getFormSchema.tsx index c0c1623c05..2d2c44e74e 100644 --- a/src/pages/distroSettings/tabs/HostTab/getFormSchema.tsx +++ b/src/pages/distroSettings/tabs/HostTab/getFormSchema.tsx @@ -1,5 +1,5 @@ import { GetFormSchema } from "components/SpruceForm"; -import { Arch, BootstrapMethod, Provider, SshKey } from "gql/generated/types"; +import { Arch, BootstrapMethod, Provider } from "gql/generated/types"; import { nonWindowsArchitectures, windowsArchitectures } from "./constants"; import { allocation as allocationProperties, @@ -15,13 +15,11 @@ import { type FormSchemaParams = { architecture: Arch; provider: Provider; - sshKeys: SshKey[]; }; export const getFormSchema = ({ architecture, provider, - sshKeys, }: FormSchemaParams): ReturnType => { const hasStaticProvider = provider === Provider.Static; const hasDockerProvider = provider === Provider.Docker; @@ -102,7 +100,7 @@ export const getFormSchema = ({ bootstrapMethod: { enum: [BootstrapMethod.LegacySsh] }, }, }, - sshConfig: sshConfig(sshKeys), + sshConfig, allocation, }, }, @@ -116,7 +114,7 @@ export const getFormSchema = ({ }, }, bootstrapSettings, - sshConfig: sshConfig(sshKeys), + sshConfig, allocation, }, }, @@ -142,11 +140,11 @@ const bootstrapSettings = { properties: bootstrapProperties.schema, }; -const sshConfig = (sshKeys: SshKey[]) => ({ +const sshConfig = { type: "object" as "object", title: "SSH Configuration", - properties: sshConfigProperties.schema(sshKeys), -}); + properties: sshConfigProperties.schema, +}; const allocation = { type: "object" as "object", diff --git a/src/pages/distroSettings/tabs/HostTab/schemaFields.tsx b/src/pages/distroSettings/tabs/HostTab/schemaFields.tsx index 08535c78ff..e2b4d71a82 100644 --- a/src/pages/distroSettings/tabs/HostTab/schemaFields.tsx +++ b/src/pages/distroSettings/tabs/HostTab/schemaFields.tsx @@ -7,7 +7,7 @@ import { FieldRow, } from "components/SpruceForm/FieldTemplates"; import { size } from "constants/tokens"; -import { Arch, SshKey } from "gql/generated/types"; +import { Arch } from "gql/generated/types"; import { architectureToCopy, bootstrapMethodToCopy, @@ -408,21 +408,6 @@ const user = { }, }; -const sshKey = { - schema: (sshKeys: SshKey[]) => ({ - type: "string" as "string", - title: "SSH Key", - oneOf: sshKeys.map(({ location, name }) => ({ - type: "string" as "string", - title: `${name} – ${location}`, - enum: [name], - })), - }), - uiSchema: { - "ui:allowDeselect": false, - }, -}; - const authorizedKeysFile = { schema: { type: "string" as "string", @@ -665,16 +650,14 @@ export const allocation = { }; export const sshConfig = { - schema: (sshKeys: SshKey[]) => ({ + schema: { user: user.schema, - sshKey: sshKey.schema(sshKeys), authorizedKeysFile: authorizedKeysFile.schema, sshOptions: sshOptions.schema, - }), + }, uiSchema: (hasStaticProvider: boolean) => ({ "ui:ObjectFieldTemplate": CardFieldTemplate, user: user.uiSchema, - sshKey: sshKey.uiSchema, authorizedKeysFile: authorizedKeysFile.uiSchema(hasStaticProvider), sshOptions: sshOptions.uiSchema, }), diff --git a/src/pages/distroSettings/tabs/HostTab/transformers.test.ts b/src/pages/distroSettings/tabs/HostTab/transformers.test.ts index d043e20611..5797716f46 100644 --- a/src/pages/distroSettings/tabs/HostTab/transformers.test.ts +++ b/src/pages/distroSettings/tabs/HostTab/transformers.test.ts @@ -68,7 +68,6 @@ const form: HostFormState = { }, sshConfig: { user: "admin", - sshKey: "fakeSshKey", authorizedKeysFile: "", sshOptions: ["BatchMode=yes", "ConnectTimeout=10"], }, diff --git a/src/pages/distroSettings/tabs/HostTab/transformers.ts b/src/pages/distroSettings/tabs/HostTab/transformers.ts index d7a8352b04..c4da63b1c0 100644 --- a/src/pages/distroSettings/tabs/HostTab/transformers.ts +++ b/src/pages/distroSettings/tabs/HostTab/transformers.ts @@ -29,7 +29,6 @@ export const gqlToForm = ((data) => { mountpoints, setup, setupAsSudo, - sshKey, sshOptions, user, userSpawnAllowed, @@ -64,7 +63,6 @@ export const gqlToForm = ((data) => { }, sshConfig: { user, - sshKey, authorizedKeysFile, sshOptions, }, @@ -104,7 +102,6 @@ export const formToGql = (( setupAsSudo: setup.setupAsSudo, setup: setup.setupScript, mountpoints: setup.mountpoints, - sshKey: sshConfig.sshKey, sshOptions: sshConfig.sshOptions, user: sshConfig.user, userSpawnAllowed: setup.userSpawnAllowed, diff --git a/src/pages/distroSettings/tabs/HostTab/types.ts b/src/pages/distroSettings/tabs/HostTab/types.ts index c50ee8da74..ca3176ba21 100644 --- a/src/pages/distroSettings/tabs/HostTab/types.ts +++ b/src/pages/distroSettings/tabs/HostTab/types.ts @@ -49,7 +49,6 @@ export interface HostFormState { }; sshConfig: { user: string; - sshKey: string; authorizedKeysFile: string; sshOptions: string[]; }; diff --git a/src/pages/distroSettings/tabs/testData.ts b/src/pages/distroSettings/tabs/testData.ts index 1f83a6abf1..e2b342f6d3 100644 --- a/src/pages/distroSettings/tabs/testData.ts +++ b/src/pages/distroSettings/tabs/testData.ts @@ -111,7 +111,6 @@ const distroData: DistroQuery["distro"] = { ], setup: "ls -alF", setupAsSudo: true, - sshKey: "fakeSshKey", sshOptions: ["BatchMode=yes", "ConnectTimeout=10"], user: "admin", userSpawnAllowed: false,