(ctx context.Context, serviceId string, baseRelease, targetRelease string)
| 30 | } |
| 31 | |
| 32 | func (m *imlServiceDiff) Diff(ctx context.Context, serviceId string, baseRelease, targetRelease string) (*service_diff.Diff, error) { |
| 33 | if targetRelease == "" { |
| 34 | return nil, fmt.Errorf("target release is required") |
| 35 | } |
| 36 | |
| 37 | var target *projectInfo |
| 38 | |
| 39 | targetReleaseValue, err := m.releaseService.GetRelease(ctx, targetRelease) |
| 40 | if err != nil { |
| 41 | return nil, fmt.Errorf("get target release failed:%w", err) |
| 42 | } |
| 43 | if targetReleaseValue.Service != serviceId { |
| 44 | return nil, errors.New("project not match") |
| 45 | } |
| 46 | |
| 47 | target, err = m.getReleaseInfo(ctx, targetRelease) |
| 48 | if err != nil { |
| 49 | return nil, err |
| 50 | } |
| 51 | base, err := m.getBaseInfo(ctx, serviceId, baseRelease) |
| 52 | if err != nil { |
| 53 | return nil, err |
| 54 | } |
| 55 | target.id = serviceId |
| 56 | clusters, err := m.clusterService.List(ctx) |
| 57 | if err != nil { |
| 58 | return nil, err |
| 59 | } |
| 60 | clusterIds := utils.SliceToSlice(clusters, func(i *cluster.Cluster) string { |
| 61 | return i.Uuid |
| 62 | }) |
| 63 | diff := m.diff(clusterIds, base, target) |
| 64 | return diff, nil |
| 65 | |
| 66 | } |
| 67 | func (m *imlServiceDiff) getBaseInfo(ctx context.Context, serviceId, baseRelease string) (*projectInfo, error) { |
| 68 | if baseRelease == "" { |
| 69 | return &projectInfo{}, nil |
nothing calls this directly
no test coverage detected