diff --git a/coderd/coderdtest/coderdtest.go b/coderd/coderdtest/coderdtest.go index 5cf307d842e90..d9ddc0bae2f20 100644 --- a/coderd/coderdtest/coderdtest.go +++ b/coderd/coderdtest/coderdtest.go @@ -72,6 +72,7 @@ type Options struct { AppHostname string AWSCertificates awsidentity.Certificates Authorizer rbac.Authorizer + Experimental bool AzureCertificates x509.VerifyOptions GithubOAuth2Config *coderd.GithubOAuth2Config OIDCConfig *coderd.OIDCConfig @@ -229,6 +230,7 @@ func NewOptions(t *testing.T, options *Options) (func(http.Handler), context.Can CacheDir: t.TempDir(), Database: options.Database, Pubsub: options.Pubsub, + Experimental: options.Experimental, Auditor: options.Auditor, AWSCertificates: options.AWSCertificates, diff --git a/enterprise/coderd/coderd.go b/enterprise/coderd/coderd.go index 1250e6ae129da..4cdea7ddb54e6 100644 --- a/enterprise/coderd/coderd.go +++ b/enterprise/coderd/coderd.go @@ -267,7 +267,7 @@ func (api *API) updateEntitlements(ctx context.Context) error { if changed, enabled := featureChanged(codersdk.FeatureHighAvailability); changed { coordinator := agpltailnet.NewCoordinator() - if enabled { + if api.Experimental && enabled { haCoordinator, err := tailnet.NewCoordinator(api.Logger, api.Pubsub) if err != nil { api.Logger.Error(ctx, "unable to set up high availability coordinator", slog.Error(err)) diff --git a/enterprise/coderd/replicas_test.go b/enterprise/coderd/replicas_test.go index 7a3e130cf7770..b14e52dd58fb5 100644 --- a/enterprise/coderd/replicas_test.go +++ b/enterprise/coderd/replicas_test.go @@ -24,6 +24,7 @@ func TestReplicas(t *testing.T) { db, pubsub := dbtestutil.NewDB(t) firstClient := coderdenttest.New(t, &coderdenttest.Options{ Options: &coderdtest.Options{ + Experimental: true, IncludeProvisionerDaemon: true, Database: db, Pubsub: pubsub, @@ -54,6 +55,7 @@ func TestReplicas(t *testing.T) { IncludeProvisionerDaemon: true, Database: db, Pubsub: pubsub, + Experimental: true, }, }) firstUser := coderdtest.CreateFirstUser(t, firstClient) @@ -63,8 +65,9 @@ func TestReplicas(t *testing.T) { secondClient := coderdenttest.New(t, &coderdenttest.Options{ Options: &coderdtest.Options{ - Database: db, - Pubsub: pubsub, + Experimental: true, + Database: db, + Pubsub: pubsub, }, }) secondClient.SessionToken = firstClient.SessionToken @@ -92,6 +95,7 @@ func TestReplicas(t *testing.T) { certificates := []tls.Certificate{testutil.GenerateTLSCertificate(t, "localhost")} firstClient := coderdenttest.New(t, &coderdenttest.Options{ Options: &coderdtest.Options{ + Experimental: true, IncludeProvisionerDaemon: true, Database: db, Pubsub: pubsub, @@ -105,6 +109,7 @@ func TestReplicas(t *testing.T) { secondClient := coderdenttest.New(t, &coderdenttest.Options{ Options: &coderdtest.Options{ + Experimental: true, Database: db, Pubsub: pubsub, TLSCertificates: certificates, diff --git a/site/src/components/Navbar/Navbar.tsx b/site/src/components/Navbar/Navbar.tsx index f9ffe05b545a2..95355e5a1dbe7 100644 --- a/site/src/components/Navbar/Navbar.tsx +++ b/site/src/components/Navbar/Navbar.tsx @@ -14,10 +14,15 @@ export const Navbar: React.FC = () => { selectFeatureVisibility, shallowEqual, ) + const experimental = useSelector( + xServices.entitlementsXService, + (state) => state.context.entitlements.experimental, + ) const canViewAuditLog = featureVisibility[FeatureNames.AuditLog] && Boolean(permissions?.viewAuditLog) - const canViewDeployment = Boolean(permissions?.viewDeploymentFlags) + const canViewDeployment = + experimental && Boolean(permissions?.viewDeploymentFlags) const onSignOut = () => authSend("SIGN_OUT") return (