Skip to content

Commit f61e968

Browse files
authored
Merge branch 'master' into replace-strings-with-translations
2 parents d1fd875 + ad53472 commit f61e968

File tree

14 files changed

+500
-92
lines changed

14 files changed

+500
-92
lines changed

chaoscenter/graphql/server/pkg/gitops/git-lock.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func (g *GitMutexLock) Unlock(repo string, branch *string) {
3434
key := getKey(repo, branch)
3535
g.mapMutex.Lock()
3636
if _, ok := g.gitMutex[key]; !ok {
37+
g.mapMutex.Unlock()
3738
return
3839
}
3940
temp := g.gitMutex[key]

chaoscenter/graphql/server/pkg/gitops/gitops.go

Lines changed: 83 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -276,23 +276,35 @@ func (c GitConfig) GitHardReset() error {
276276

277277
// GitPull updates the repository in provided Path
278278
func (c GitConfig) GitPull() error {
279-
_, workTree, err := c.getRepositoryWorktreeReference()
279+
repo, workTree, err := c.getRepositoryWorktreeReference()
280280
if err != nil {
281281
return err
282282
}
283283
auth, err := c.getAuthMethod()
284284
if err != nil {
285285
return err
286286
}
287-
err = workTree.Pull(&git.PullOptions{
288-
Auth: auth,
289-
RemoteName: c.RemoteName,
290-
ReferenceName: plumbing.NewBranchReferenceName(c.Branch),
291-
SingleBranch: true,
287+
err = repo.Fetch(&git.FetchOptions{
288+
Auth: auth,
289+
RemoteName: c.RemoteName,
290+
Force: true,
292291
})
293292
if err != nil && !errors.Is(err, git.NoErrAlreadyUpToDate) {
294293
return err
295294
}
295+
remoteRefName := plumbing.NewRemoteReferenceName(c.RemoteName, c.Branch)
296+
remoteRef, err := repo.Reference(remoteRefName, true)
297+
if err != nil {
298+
return err
299+
}
300+
err = workTree.Reset(&git.ResetOptions{
301+
Mode: git.HardReset,
302+
Commit: remoteRef.Hash(),
303+
})
304+
if err != nil {
305+
return err
306+
}
307+
296308
return nil
297309
}
298310

@@ -374,57 +386,90 @@ func (c GitConfig) GitCommit(user GitUser, message string, deleteFile *string) (
374386
func (c GitConfig) GetChanges() (string, map[string]int, error) {
375387
path := ProjectDataPath + "/" + c.ProjectID + "/"
376388

377-
r, _, err := c.getRepositoryWorktreeReference()
389+
repo, _, err := c.getRepositoryWorktreeReference()
378390
if err != nil {
379391
return "", nil, err
380392
}
381-
var knownCommit *object.Commit = nil
382-
if c.LatestCommit != "" {
383-
knownCommit, err = r.CommitObject(plumbing.NewHash(c.LatestCommit))
384-
if err != nil {
385-
return "", nil, err
386-
}
393+
394+
prevKnownHash := c.LatestCommit
395+
396+
headRef, err := repo.Head()
397+
if err != nil {
398+
return "", nil, err
387399
}
400+
388401
visited := map[string]int{}
389402

390-
commitIter, err := r.Log(&git.LogOptions{
391-
PathFilter: func(file string) bool {
392-
if (strings.HasSuffix(path, "/") && strings.HasPrefix(file, path)) || (path == file) {
393-
visited[file] += 1
394-
return true
395-
}
396-
return false
397-
},
403+
commitIter, err := repo.Log(&git.LogOptions{
404+
From: headRef.Hash(),
398405
Order: git.LogOrderCommitterTime,
399406
})
400407
if err != nil {
401-
return "", nil, errors.New("failed to get commit Iterator :" + err.Error())
408+
return "", nil, fmt.Errorf("failed to get commit iterator: %w", err)
402409
}
403410

404-
commit, err := commitIter.Next()
405-
if err != nil && err != io.EOF {
406-
return "", nil, err
407-
}
408-
if commit != nil {
409-
c.LatestCommit = commit.Hash.String()
410-
}
411+
for {
412+
commit, err := commitIter.Next()
413+
if err == io.EOF {
414+
break
415+
}
416+
if err != nil {
417+
return "", nil, err
418+
}
419+
420+
// stop when we reach previously known commit
421+
if prevKnownHash != "" && commit.Hash.String() == prevKnownHash {
422+
break
423+
}
411424

412-
for err != io.EOF && commit != nil {
413-
if knownCommit != nil {
414-
ancestor, er := commit.IsAncestor(knownCommit)
415-
if er != nil {
416-
return "", nil, er
425+
// Initial commit
426+
if commit.NumParents() == 0 {
427+
files, err := commit.Files()
428+
if err != nil {
429+
return "", nil, err
417430
}
418-
if knownCommit.Hash == commit.Hash || ancestor {
419-
break
431+
err = files.ForEach(func(f *object.File) error {
432+
if strings.HasPrefix(f.Name, path) {
433+
visited[f.Name]++
434+
}
435+
return nil
436+
})
437+
if err != nil {
438+
return "", nil, err
420439
}
440+
continue
421441
}
422-
commit, err = commitIter.Next()
423-
if err != nil && err != io.EOF {
442+
443+
parent, err := commit.Parent(0)
444+
if err != nil {
445+
return "", nil, err
446+
}
447+
448+
patch, err := parent.Patch(commit)
449+
if err != nil {
424450
return "", nil, err
425451
}
452+
453+
for _, fp := range patch.FilePatches() {
454+
from, to := fp.Files()
455+
456+
if from != nil {
457+
filePath := from.Path()
458+
if strings.HasPrefix(filePath, path) {
459+
visited[filePath]++
460+
}
461+
}
462+
463+
if to != nil {
464+
filePath := to.Path()
465+
if strings.HasPrefix(filePath, path) {
466+
visited[filePath]++
467+
}
468+
}
469+
}
426470
}
427471

472+
c.LatestCommit = headRef.Hash().String()
428473
return c.LatestCommit, visited, nil
429474
}
430475

chaoscenter/graphql/server/pkg/gitops/service.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,6 @@ func (g *gitOpsService) gitSyncHelper(config gitops.GitConfigDB, wg *sync.WaitGr
379379
}
380380

381381
gitConfig := GetGitOpsConfig(*conf)
382-
383382
err = g.SyncDBToGit(nil, gitConfig)
384383
if err != nil {
385384
log.Error("Repo Sync ERROR: ", conf.ProjectID, err.Error())
@@ -480,9 +479,9 @@ func (g *gitOpsService) SyncDBToGit(ctx context.Context, config GitConfig) error
480479
log.Error("Error unmarshalling data from git file : " + file + " | " + err.Error())
481480
continue
482481
}
483-
wfID := gjson.Get(string(data), "metadata.labels.experiment_id").String()
482+
wfID := gjson.Get(string(data), "metadata.labels.workflow_id").String()
484483
kind := strings.ToLower(gjson.Get(string(data), "kind").String())
485-
if kind != "cronexperiment" && kind != "experiment" && kind != "chaosengine" {
484+
if kind != "cronexperiment" && kind != "experiment" && kind != "chaosengine" && kind != "workflow" {
486485
continue
487486
}
488487

chaoscenter/graphql/server/server.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,20 @@ import (
2424
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/graph"
2525
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/graph/generated"
2626
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/authorization"
27+
chaos_experiment2 "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/chaos_experiment/ops"
2728
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/chaoshub"
2829
handler2 "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/chaoshub/handler"
2930
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb"
31+
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/chaos_experiment"
32+
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/chaos_experiment_run"
3033
dbSchemaChaosHub "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/chaos_hub"
34+
dbChaosInfra "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/chaos_infrastructure"
3135
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/config"
36+
gitops2 "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/gitops"
37+
dbSchemaProbe "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/database/mongodb/probe"
38+
gitops3 "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/gitops"
3239
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/handlers"
40+
probe "github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/probe/handler"
3341
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/pkg/projects"
3442
pb "github.com/litmuschaos/litmus/chaoscenter/graphql/server/protos"
3543
"github.com/litmuschaos/litmus/chaoscenter/graphql/server/utils"
@@ -144,6 +152,19 @@ func main() {
144152
go chaoshub.NewService(dbSchemaChaosHub.NewChaosHubOperator(mongodbOperator)).RecurringHubSync()
145153
go chaoshub.NewService(dbSchemaChaosHub.NewChaosHubOperator(mongodbOperator)).SyncDefaultChaosHubs()
146154

155+
// go routine for syncing gitops
156+
chaosInfraOperator := dbChaosInfra.NewInfrastructureOperator(mongodbOperator)
157+
chaosExperimentOperator := chaos_experiment.NewChaosExperimentOperator(mongodbOperator)
158+
chaosExperimentRunOperator := chaos_experiment_run.NewChaosExperimentRunOperator(mongodbOperator)
159+
gitopsOperator := gitops2.NewGitOpsOperator(mongodbOperator)
160+
probeOperator := dbSchemaProbe.NewChaosProbeOperator(mongodbOperator)
161+
162+
probeService := probe.NewProbeService(probeOperator)
163+
chaosExperimentService := chaos_experiment2.NewChaosExperimentService(chaosExperimentOperator, chaosInfraOperator, chaosExperimentRunOperator, probeService)
164+
gitOpsService := gitops3.NewGitOpsService(gitopsOperator, chaosExperimentService, *chaosExperimentOperator)
165+
166+
go gitOpsService.GitOpsSyncHandler(false)
167+
147168
// routers
148169
router.GET("/", handlers.PlaygroundHandler())
149170
router.Any("/query", authorization.Middleware(srv, mongodb.MgoClient))

chaoscenter/web/src/components/NameIdDescriptionTags/NameIdDescriptionTags.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ export const Description = (props: DescriptionComponentProps): JSX.Element => {
128128
tooltipProps={{ dataTooltipId: 'description' }}
129129
placeholder={getString('nameIdDescriptionTags.descriptionPlaceholder')}
130130
{...restDescriptionProps}
131+
maxLength={100000} // Increase limit to prevent silent truncation (default is 1024)
131132
/>
132133
)}
133134
</Container>

chaoscenter/web/src/services/experiment/KubernetesYamlService.ts

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -974,26 +974,30 @@ export class KubernetesYamlService extends ExperimentYamlService {
974974
}
975975

976976
updateFaultTunablesInFaultData(
977-
faultData: FaultData | undefined,
978-
faultTunables: FaultTunables | undefined
979-
): FaultData | undefined {
980-
const chaosEngine = faultData?.engineCR;
981-
if (!chaosEngine || !faultTunables) return faultData;
982-
983-
const envs: EnvVar[] = Object.entries(faultTunables).map(([envName, faultTunable]) => {
984-
return {
985-
name: envName,
986-
value: faultTunable.value?.toString(),
987-
valueFrom: faultTunable.valueFrom
988-
};
989-
});
990-
991-
if (chaosEngine.spec?.experiments?.[0].spec.components?.env)
992-
chaosEngine.spec.experiments[0].spec.components.env = envs;
977+
faultData: FaultData | undefined,
978+
faultTunables: FaultTunables | undefined
979+
): FaultData | undefined {
980+
const chaosEngine = faultData?.engineCR;
981+
if (!chaosEngine || !faultTunables) return faultData;
982+
983+
const envs: EnvVar[] = Object.entries(faultTunables).map(([envName, faultTunable]) => {
984+
return {
985+
name: envName,
986+
value: faultTunable.value?.toString(),
987+
valueFrom: faultTunable.valueFrom
988+
};
989+
});
993990

994-
return faultData;
991+
if (chaosEngine.spec?.experiments?.[0].spec.components) {
992+
chaosEngine.spec.experiments[0].spec.components = {
993+
...chaosEngine.spec.experiments[0].spec.components,
994+
env: envs
995+
};
995996
}
996997

998+
return faultData;
999+
}
1000+
9971001
async preProcessChaosEngineAndExperimentManifest(
9981002
key: ChaosObjectStoresPrimaryKeys['experiments'],
9991003
chaosEngine: ChaosEngine,

chaoscenter/web/src/strings/strings.en.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,7 @@ probeValidation:
897897
version: Probe version is a required field
898898
probes: Probes
899899
probesArePassed: probes are passed
900+
problems: Problems
900901
prod: Prod
901902
production: Production
902903
project: Project

chaoscenter/web/src/strings/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,7 @@ export interface StringsMap {
747747
'production': unknown
748748
'probes': unknown
749749
'probesArePassed': unknown
750+
'problems': unknown
750751
'prod': unknown
751752
'project': unknown
752753
'projectCreatedByYou': unknown

chaoscenter/web/src/views/AddProbeModalWizard/AddProbeModalWizard.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,7 @@ const TuneDetailsStep: React.FC<
866866
name="kubernetesCMDProperties.command"
867867
label={getString('command')}
868868
placeholder={'Command to be executed'}
869+
maxLength={100000} // Increase limit to prevent silent truncation (default is 1024)
869870
/>
870871

871872
<Divider />
@@ -994,6 +995,7 @@ const TuneDetailsStep: React.FC<
994995
name="promProperties.query"
995996
label={getString('prometheusQuery')}
996997
placeholder={'Query to get promethus metrics'}
998+
maxLength={100000} // Increase limit to prevent silent truncation (default is 1024)
997999
/>
9981000
<FormInput.Text
9991001
name="promProperties.queryPath"

0 commit comments

Comments
 (0)