diff --git a/chaoscenter/graphql/server/pkg/chaoshub/ops/gitops.go b/chaoscenter/graphql/server/pkg/chaoshub/ops/gitops.go
index 0a4950efef4..9480b144e6d 100644
--- a/chaoscenter/graphql/server/pkg/chaoshub/ops/gitops.go
+++ b/chaoscenter/graphql/server/pkg/chaoshub/ops/gitops.go
@@ -6,6 +6,7 @@ import (
"strings"
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/graph/model"
+ "github.com/litmuschaos/litmus/chaoscenter/graphql/server/utils"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
@@ -284,7 +285,7 @@ func (c ChaosHubConfig) generateAuthMethod() (transport.AuthMethod, error) {
var auth transport.AuthMethod
if c.AuthType == model.AuthTypeToken {
auth = &http.BasicAuth{
- Username: "litmus", // this can be anything except an empty string
+ Username: utils.Config.GitUsername, // must be a non-empty string or 'x-token-auth' for Bitbucket
Password: *c.Token,
}
} else if c.AuthType == model.AuthTypeBasic {
diff --git a/chaoscenter/graphql/server/pkg/gitops/gitops.go b/chaoscenter/graphql/server/pkg/gitops/gitops.go
index c7b2afda308..8065ace8c30 100644
--- a/chaoscenter/graphql/server/pkg/gitops/gitops.go
+++ b/chaoscenter/graphql/server/pkg/gitops/gitops.go
@@ -11,6 +11,8 @@ import (
"strings"
"time"
+ "github.com/litmuschaos/litmus/chaoscenter/graphql/server/utils"
+
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/plumbing/object"
@@ -184,7 +186,7 @@ func (c GitConfig) getAuthMethod() (transport.AuthMethod, error) {
case model.AuthTypeToken:
return &http.BasicAuth{
- Username: "litmus", // this can be anything except an empty string
+ Username: utils.Config.GitUsername, // must be a non-empty string or 'x-token-auth' for Bitbucket
Password: *c.Token,
}, nil
diff --git a/chaoscenter/graphql/server/utils/variables.go b/chaoscenter/graphql/server/utils/variables.go
index 678c7feb731..3818dc211f4 100644
--- a/chaoscenter/graphql/server/utils/variables.go
+++ b/chaoscenter/graphql/server/utils/variables.go
@@ -30,6 +30,7 @@ type Configuration struct {
GrpcPort string `split_words:"true" default:"8000"`
InfraCompatibleVersions string `required:"true" split_words:"true"`
DefaultHubGitURL string `required:"true" default:"https://github.com/litmuschaos/chaos-charts"`
+ GitUsername string `required:"true" split_words:"true" default:"litmus"`
DefaultHubBranchName string `required:"true" split_words:"true"`
CustomChaosHubPath string `split_words:"true" default:"/tmp/"`
DefaultChaosHubPath string `split_words:"true" default:"/tmp/default/"`
diff --git a/chaoscenter/web/src/views/ExperimentBuilderTemplateSelection/blankCanvasTemplate.ts b/chaoscenter/web/src/views/ExperimentBuilderTemplateSelection/blankCanvasTemplate.ts
index 6f13e4a8e61..1474014dcc2 100644
--- a/chaoscenter/web/src/views/ExperimentBuilderTemplateSelection/blankCanvasTemplate.ts
+++ b/chaoscenter/web/src/views/ExperimentBuilderTemplateSelection/blankCanvasTemplate.ts
@@ -10,7 +10,12 @@ export default function blankCanvasTemplate(
switch (infrastructureType) {
case InfrastructureType.KUBERNETES:
- return kubernetesBlankCanvasTemplate(experimentName, experiment?.chaosInfrastructure?.namespace);
+ return kubernetesBlankCanvasTemplate(
+ experimentName,
+ experiment?.chaosInfrastructure?.namespace,
+ undefined,
+ experiment?.imageRegistry,
+ );
}
}
diff --git a/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2Table.tsx b/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2Table.tsx
index 92eb81be5fb..3f0877d832f 100644
--- a/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2Table.tsx
+++ b/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2Table.tsx
@@ -215,10 +215,10 @@ const ExperimentDashboardV2Table = ({
);
case ExperimentRunStatus.QUEUED:
return (
-
);
default:
diff --git a/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2TableMenu.tsx b/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2TableMenu.tsx
index 51389833aa3..48385401474 100644
--- a/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2TableMenu.tsx
+++ b/chaoscenter/web/src/views/ExperimentDashboardV2/ExperimentDashboardV2TableMenu.tsx
@@ -33,7 +33,9 @@ export const MenuCell = ({
onError: error => showError(error.message)
});
- const lastExperimentRunStatus = data.recentExecutions[0]?.experimentRunStatus;
+ const isDeleteButtonEnabled = !data.recentExecutions.some(
+ execution => execution?.experimentRunStatus === ExperimentRunStatus.RUNNING
+ );
//
const confirmationDialogProps = {
@@ -108,10 +110,7 @@ export const MenuCell = ({
icon="main-trash"
text={getString('deleteExperiment')}
onClick={openDeleteDialog}
- disabled={
- lastExperimentRunStatus === ExperimentRunStatus.RUNNING ||
- lastExperimentRunStatus === ExperimentRunStatus.QUEUED
- }
+ disabled={isDeleteButtonEnabled == false}
permission={PermissionGroup.OWNER}
/>
diff --git a/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx b/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx
index 89f8207357d..ac0b9ac926c 100644
--- a/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx
+++ b/chaoscenter/web/src/views/StudioOverview/StudioOverview.tsx
@@ -23,6 +23,8 @@ import { ChaosInfrastructureReferenceFieldProps, StudioErrorState, StudioTabs }
import experimentYamlService from 'services/experiment';
import KubernetesChaosInfrastructureReferenceFieldController from '@controllers/KubernetesChaosInfrastructureReferenceField';
import { InfrastructureType } from '@api/entities';
+import { getImageRegistry } from '@api/core/ImageRegistry';
+import { getScope } from '@utils';
import css from './StudioOverview.module.scss';
interface StudioOverviewViewProps {
@@ -52,6 +54,20 @@ export default function StudioOverviewView({
const [currentExperiment, setCurrentExperiment] = React.useState();
+ const scope = getScope();
+
+ // Fetch the image registry data using Apollo's useQuery hook
+ const { data: getImageRegistryData, loading: imageRegistryLoading } = getImageRegistry({
+ projectID: scope.projectID,
+ });
+
+ const imageRegistry = getImageRegistryData?.getImageRegistry?{
+ name: getImageRegistryData.getImageRegistry.imageRegistryInfo.imageRegistryName,
+ repo: getImageRegistryData.getImageRegistry.imageRegistryInfo.imageRepoName,
+ secret: getImageRegistryData.getImageRegistry.imageRegistryInfo.secretName,
+ }
+ : undefined;
+
React.useEffect(() => {
experimentHandler?.getExperiment(experimentKey).then(experiment => {
delete experiment?.manifest;
@@ -85,6 +101,9 @@ export default function StudioOverviewView({
})
})}
onSubmit={values => {
+
+ values.imageRegistry = imageRegistry
+
if (values.chaosInfrastructure.namespace === undefined) {
delete values.chaosInfrastructure.namespace;
}
@@ -144,7 +163,13 @@ export default function StudioOverviewView({
text={getString('cancel')}
onClick={openDiscardDialog}
/>
-
+