diff --git a/models/meshmodel/core/policies/rego_policy_relationship.go b/models/meshmodel/core/policies/rego_policy_relationship.go index 4f26ddca..06cc5234 100644 --- a/models/meshmodel/core/policies/rego_policy_relationship.go +++ b/models/meshmodel/core/policies/rego_policy_relationship.go @@ -49,9 +49,10 @@ func NewRegoInstance(policyDir string, regManager *registry.RegistryManager) (*R } // RegoPolicyHandler takes the required inputs and run the query against all the policy files provided -func (r *Rego) RegoPolicyHandler(designFile pattern.PatternFile, regoQueryString string, relationshipsToEvalaute ...string) (interface{}, error) { +func (r *Rego) RegoPolicyHandler(designFile pattern.PatternFile, regoQueryString string, relationshipsToEvalaute ...string) (pattern.EvaluationResponse, error) { + var evaluationResponse pattern.EvaluationResponse if r == nil { - return nil, ErrEval(fmt.Errorf("policy engine is not yet ready")) + return evaluationResponse, ErrEval(fmt.Errorf("policy engine is not yet ready")) } regoEngine, err := rego.New( rego.Query(regoQueryString), @@ -61,37 +62,37 @@ func (r *Rego) RegoPolicyHandler(designFile pattern.PatternFile, regoQueryString ).PrepareForEval(r.ctx) if err != nil { logrus.Error("error preparing for evaluation", err) - return nil, ErrPrepareForEval(err) + return evaluationResponse, ErrPrepareForEval(err) } eval_result, err := regoEngine.Eval(r.ctx, rego.EvalInput(designFile)) if err != nil { - return nil, ErrEval(err) + return evaluationResponse, ErrEval(err) } if len(eval_result) == 0 { - return nil, ErrEval(fmt.Errorf("evaluation results are empty")) + return evaluationResponse, ErrEval(fmt.Errorf("evaluation results are empty")) } if len(eval_result[0].Expressions) == 0 { - return nil, ErrEval(fmt.Errorf("evaluation results are empty")) + return evaluationResponse, ErrEval(fmt.Errorf("evaluation results are empty")) } result, err := utils.Cast[map[string]interface{}](eval_result[0].Expressions[0].Value) if err != nil { - return nil, ErrEval(err) + return evaluationResponse, ErrEval(err) } evalResults, ok := result["evaluate"] if !ok { - return nil, ErrEval(fmt.Errorf("evaluation results are empty")) + return evaluationResponse, ErrEval(fmt.Errorf("evaluation results are empty")) } evaluatedPatternFile, err := utils.MarshalAndUnmarshal[interface{}, pattern.PatternFile](evalResults) if err != nil { - return nil, err + return evaluationResponse, err } - - return evaluatedPatternFile, nil + evaluationResponse.Design = evaluatedPatternFile + return evaluationResponse, nil } diff --git a/models/meshmodel/core/v1beta1/host.go b/models/meshmodel/core/v1beta1/host.go index 0ac38d14..0d2cdee2 100644 --- a/models/meshmodel/core/v1beta1/host.go +++ b/models/meshmodel/core/v1beta1/host.go @@ -59,7 +59,7 @@ func NewDependencyHandler(connectionKind string) (DependencyHandler, error) { type ArtifactHub struct{} -const MesheryAnnotationPrefix = "design.meshmodel.io" +const MesheryAnnotationPrefix = "design.meshery.io" func (ah ArtifactHub) HandleDependents(comp component.ComponentDefinition, kc *kubernetes.Client, isDeploy, performUpgrade bool) (summary string, err error) { sourceURI, err := utils.Cast[string](comp.Metadata.AdditionalProperties["source_uri"]) // should be part of registrant data(?) diff --git a/models/meshmodel/registry/registry.go b/models/meshmodel/registry/registry.go index 91606a61..459ab7c3 100644 --- a/models/meshmodel/registry/registry.go +++ b/models/meshmodel/registry/registry.go @@ -149,8 +149,8 @@ func (rm *RegistryManager) GetRegistrants(f *models.HostFilter) ([]models.MeshMo "COUNT(CASE WHEN r.type = 'model' THEN 1 END) AS models," + "COUNT(CASE WHEN r.type = 'relationship' THEN 1 END) AS relationships, " + "COUNT(CASE WHEN r.type = 'policy' THEN 1 END) AS policies"). - Joins("LEFT JOIN registries r ON c.id = r.registrant_id") - // Group("c.id, c.hostname, h.port") // required + Joins("LEFT JOIN registries r ON c.id = r.registrant_id"). + Group("c.id") if f.DisplayName != "" { query = query.Where("kind LIKE ?", "%"+f.DisplayName+"%") diff --git a/models/registration/dir.go b/models/registration/dir.go index dc5167c0..fb7db466 100644 --- a/models/registration/dir.go +++ b/models/registration/dir.go @@ -54,6 +54,7 @@ func (d Dir) PkgUnit(regErrStore RegistrationErrorStore) (_ packagingUnit, err e regErrStore.AddInvalidDefinition(path, err) return nil } + // set it to pkgunit switch e.Type() { case entity.Model: diff --git a/models/registration/register.go b/models/registration/register.go index d7b321b1..dd208cdb 100644 --- a/models/registration/register.go +++ b/models/registration/register.go @@ -76,8 +76,10 @@ func (rh *RegistrationHelper) register(pkg packagingUnit) { } } + + model.Registrant.Status = connection.Registered _, _, err := rh.regManager.RegisterEntity( - connection.Connection{Kind: model.Registrant.Kind}, + model.Registrant, &model, ) @@ -107,7 +109,7 @@ func (rh *RegistrationHelper) register(pkg packagingUnit) { } _, _, err := rh.regManager.RegisterEntity( - connection.Connection{Kind: model.Registrant.Kind}, + model.Registrant, &comp, ) if err != nil { @@ -119,7 +121,7 @@ func (rh *RegistrationHelper) register(pkg packagingUnit) { // 3. Register relationships for _, rel := range pkg.relationships { rel.Model = model - _, _, err := rh.regManager.RegisterEntity(connection.Connection{Kind: model.Registrant.Kind}, &rel) + _, _, err := rh.regManager.RegisterEntity(model.Registrant, &rel) if err != nil { err = ErrRegisterEntity(err, string(rel.Type()), string(rel.Kind)) rh.regErrStore.InsertEntityRegError(hostname, modelName, entity.RelationshipDefinition, rel.Id.String(), err) diff --git a/models/registration/svg_helper.go b/models/registration/svg_helper.go index 086e5673..5122c795 100644 --- a/models/registration/svg_helper.go +++ b/models/registration/svg_helper.go @@ -55,7 +55,7 @@ func WriteAndReplaceSVGWithFileSystemPath(svgColor, svgWhite, svgComplete string return } svgColorPath = getRelativePathForAPI(baseDir, filepath.Join(dirname, "color", filename+"-color.svg")) //Replace the actual SVG with path to SVG - writeHashCheckSVG(hashString, svgColor) + writeHashCheckSVG(hashString, svgColorPath) } White: @@ -86,7 +86,7 @@ White: return } svgWhitePath = getRelativePathForAPI(baseDir, filepath.Join(dirname, "white", filename+"-white.svg")) //Replace the actual SVG with path to SVG - writeHashCheckSVG(hashString, svgWhite) + writeHashCheckSVG(hashString, svgWhitePath) } Complete: @@ -117,7 +117,7 @@ Complete: return } svgCompletePath = getRelativePathForAPI(baseDir, filepath.Join(dirname, "complete", filename+"-complete.svg")) //Replace the actual SVG with path to SVG - writeHashCheckSVG(hashString, svgComplete) + writeHashCheckSVG(hashString, svgCompletePath) } return