- Notifications
You must be signed in to change notification settings - Fork913
feat: add organization scope for shared ports#18314
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Changes fromall commits
4724f79
408d70d
dfea63d
429bc13
e04084e
842c5bb
e9abb74
a60f072
c26bf27
c10de9e
bdee7ac
29d19a2
d5cbd9a
9bb36ec
089f094
45c8508
e8f031e
495fbc3
27bccf2
File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading.Please reload this page.
Jump to
Uh oh!
There was an error while loading.Please reload this page.
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Uh oh!
There was an error while loading.Please reload this page.
Original file line number | Diff line number | Diff line change | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -24,6 +24,7 @@ message WorkspaceApp { | ||||||||||||
OWNER = 1; | ||||||||||||
AUTHENTICATED = 2; | ||||||||||||
PUBLIC = 3; | ||||||||||||
ORGANIZATION = 4; | ||||||||||||
Comment on lines 24 to +27 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. This could also be added in the Lines 404 to 408 in068f9a0
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. any chance you can explain to me what a subagent is and why I would want to add that here? it makes sense on its face but I have no idea what a subagent is 💀 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others.Learn more. It’s just an agent that has a parent agent that manages its lifecycle. They’re being used for our dev container feature where we inject agents into a dev container during the runtime (not startup) of a workspace. So they’re for all intents and purposes normal agents, just with a different lifecycle. | ||||||||||||
} | ||||||||||||
SharingLevel sharing_level = 10; | ||||||||||||
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,92 @@ | ||
-- Drop the view that depends on the templates table | ||
DROP VIEW template_with_names; | ||
-- Remove 'organization' from the app_sharing_level enum | ||
CREATE TYPE new_app_sharing_level AS ENUM ( | ||
'owner', | ||
'authenticated', | ||
'public' | ||
); | ||
-- Update workspace_agent_port_share table to use old enum | ||
-- Convert any 'organization' values to 'authenticated' during downgrade | ||
ALTER TABLE workspace_agent_port_share | ||
ALTER COLUMN share_level TYPE new_app_sharing_level USING ( | ||
CASE | ||
WHEN share_level = 'organization' THEN 'authenticated'::new_app_sharing_level | ||
ELSE share_level::text::new_app_sharing_level | ||
END | ||
); | ||
-- Update workspace_apps table to use old enum | ||
-- Convert any 'organization' values to 'authenticated' during downgrade | ||
ALTER TABLE workspace_apps | ||
ALTER COLUMN sharing_level DROP DEFAULT, | ||
ALTER COLUMN sharing_level TYPE new_app_sharing_level USING ( | ||
CASE | ||
WHEN sharing_level = 'organization' THEN 'authenticated'::new_app_sharing_level | ||
ELSE sharing_level::text::new_app_sharing_level | ||
END | ||
), | ||
ALTER COLUMN sharing_level SET DEFAULT 'owner'::new_app_sharing_level; | ||
-- Update templates table to use old enum | ||
-- Convert any 'organization' values to 'authenticated' during downgrade | ||
ALTER TABLE templates | ||
ALTER COLUMN max_port_sharing_level DROP DEFAULT, | ||
ALTER COLUMN max_port_sharing_level TYPE new_app_sharing_level USING ( | ||
CASE | ||
WHEN max_port_sharing_level = 'organization' THEN 'owner'::new_app_sharing_level | ||
ELSE max_port_sharing_level::text::new_app_sharing_level | ||
END | ||
), | ||
ALTER COLUMN max_port_sharing_level SET DEFAULT 'owner'::new_app_sharing_level; | ||
-- Drop old enum and rename new one | ||
DROP TYPE app_sharing_level; | ||
ALTER TYPE new_app_sharing_level RENAME TO app_sharing_level; | ||
-- Recreate the template_with_names view | ||
CREATE VIEW template_with_names AS | ||
SELECT templates.id, | ||
templates.created_at, | ||
templates.updated_at, | ||
templates.organization_id, | ||
templates.deleted, | ||
templates.name, | ||
templates.provisioner, | ||
templates.active_version_id, | ||
templates.description, | ||
templates.default_ttl, | ||
templates.created_by, | ||
templates.icon, | ||
templates.user_acl, | ||
templates.group_acl, | ||
templates.display_name, | ||
templates.allow_user_cancel_workspace_jobs, | ||
templates.allow_user_autostart, | ||
templates.allow_user_autostop, | ||
templates.failure_ttl, | ||
templates.time_til_dormant, | ||
templates.time_til_dormant_autodelete, | ||
templates.autostop_requirement_days_of_week, | ||
templates.autostop_requirement_weeks, | ||
templates.autostart_block_days_of_week, | ||
templates.require_active_version, | ||
templates.deprecated, | ||
templates.activity_bump, | ||
templates.max_port_sharing_level, | ||
templates.use_classic_parameter_flow, | ||
COALESCE(visible_users.avatar_url, ''::text) AS created_by_avatar_url, | ||
COALESCE(visible_users.username, ''::text) AS created_by_username, | ||
COALESCE(visible_users.name, ''::text) AS created_by_name, | ||
COALESCE(organizations.name, ''::text) AS organization_name, | ||
COALESCE(organizations.display_name, ''::text) AS organization_display_name, | ||
COALESCE(organizations.icon, ''::text) AS organization_icon | ||
FROM ((templates | ||
LEFT JOIN visible_users ON ((templates.created_by = visible_users.id))) | ||
LEFT JOIN organizations ON ((templates.organization_id = organizations.id))); | ||
COMMENT ON VIEW template_with_names IS 'Joins in the display name information such as username, avatar, and organization name.'; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
-- Drop the view that depends on the templates table | ||
DROP VIEW template_with_names; | ||
-- Add 'organization' to the app_sharing_level enum | ||
CREATE TYPE new_app_sharing_level AS ENUM ( | ||
'owner', | ||
'authenticated', | ||
'organization', | ||
'public' | ||
); | ||
-- Update workspace_agent_port_share table to use new enum | ||
ALTER TABLE workspace_agent_port_share | ||
ALTER COLUMN share_level TYPE new_app_sharing_level USING (share_level::text::new_app_sharing_level); | ||
-- Update workspace_apps table to use new enum | ||
ALTER TABLE workspace_apps | ||
ALTER COLUMN sharing_level DROP DEFAULT, | ||
ALTER COLUMN sharing_level TYPE new_app_sharing_level USING (sharing_level::text::new_app_sharing_level), | ||
ALTER COLUMN sharing_level SET DEFAULT 'owner'::new_app_sharing_level; | ||
-- Update templates table to use new enum | ||
ALTER TABLE templates | ||
ALTER COLUMN max_port_sharing_level DROP DEFAULT, | ||
ALTER COLUMN max_port_sharing_level TYPE new_app_sharing_level USING (max_port_sharing_level::text::new_app_sharing_level), | ||
ALTER COLUMN max_port_sharing_level SET DEFAULT 'owner'::new_app_sharing_level; | ||
-- Drop old enum and rename new one | ||
DROP TYPE app_sharing_level; | ||
ALTER TYPE new_app_sharing_level RENAME TO app_sharing_level; | ||
-- Recreate the template_with_names view | ||
CREATE VIEW template_with_names AS | ||
SELECT templates.id, | ||
templates.created_at, | ||
templates.updated_at, | ||
templates.organization_id, | ||
templates.deleted, | ||
templates.name, | ||
templates.provisioner, | ||
templates.active_version_id, | ||
templates.description, | ||
templates.default_ttl, | ||
templates.created_by, | ||
templates.icon, | ||
templates.user_acl, | ||
templates.group_acl, | ||
templates.display_name, | ||
templates.allow_user_cancel_workspace_jobs, | ||
templates.allow_user_autostart, | ||
templates.allow_user_autostop, | ||
templates.failure_ttl, | ||
templates.time_til_dormant, | ||
templates.time_til_dormant_autodelete, | ||
templates.autostop_requirement_days_of_week, | ||
templates.autostop_requirement_weeks, | ||
templates.autostart_block_days_of_week, | ||
templates.require_active_version, | ||
templates.deprecated, | ||
templates.activity_bump, | ||
templates.max_port_sharing_level, | ||
templates.use_classic_parameter_flow, | ||
COALESCE(visible_users.avatar_url, ''::text) AS created_by_avatar_url, | ||
COALESCE(visible_users.username, ''::text) AS created_by_username, | ||
COALESCE(visible_users.name, ''::text) AS created_by_name, | ||
COALESCE(organizations.name, ''::text) AS organization_name, | ||
COALESCE(organizations.display_name, ''::text) AS organization_display_name, | ||
COALESCE(organizations.icon, ''::text) AS organization_icon | ||
FROM ((templates | ||
LEFT JOIN visible_users ON ((templates.created_by = visible_users.id))) | ||
LEFT JOIN organizations ON ((templates.organization_id = organizations.id))); | ||
COMMENT ON VIEW template_with_names IS 'Joins in the display name information such as username, avatar, and organization name.'; |
Some generated files are not rendered by default. Learn more abouthow customized files appear on GitHub.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.