diff --git a/mta-v6.x/application.properties b/mta-v6.x/application.properties
index afba433e..95859670 100644
--- a/mta-v6.x/application.properties
+++ b/mta-v6.x/application.properties
@@ -1,5 +1,5 @@
quarkus.kogito.devservices.enabled=false
-mta.url = ${MTA_URL:http://tackle-ui.my-konveyor-operator.svc.cluster.local:8080}
+mta.url = ${MTA_URL:http://mta-ui.openshift-mta.svc.cluster.local:8080}
quarkus.rest-client.mta_json.url = ${mta.url}
quarkus.rest-client.notifications.url=${BACKSTAGE_NOTIFICATIONS_URL:http://backstage-backstage.rhdh-operator/api/notifications/}
\ No newline at end of file
diff --git a/mta-v6.x/specs/notifications.json b/mta-v6.x/specs/notifications.json
index 878996d8..7861ce64 100644
--- a/mta-v6.x/specs/notifications.json
+++ b/mta-v6.x/specs/notifications.json
@@ -12,9 +12,7 @@
}
],
"servers": [
- {
- "url": "http://localhost:7007/api/notifications"
- }
+
],
"paths": {
"/notifications": {
diff --git a/mta-v7.x/application.properties b/mta-v7.x/application.properties
index afba433e..a4f7e4bf 100644
--- a/mta-v7.x/application.properties
+++ b/mta-v7.x/application.properties
@@ -1,5 +1,5 @@
quarkus.kogito.devservices.enabled=false
-mta.url = ${MTA_URL:http://tackle-ui.my-konveyor-operator.svc.cluster.local:8080}
+mta.url = ${MTA_URL:http://mta-ui.openshift-mta.svc.cluster.local:8080}
quarkus.rest-client.mta_json.url = ${mta.url}
-quarkus.rest-client.notifications.url=${BACKSTAGE_NOTIFICATIONS_URL:http://backstage-backstage.rhdh-operator/api/notifications/}
\ No newline at end of file
+quarkus.rest-client.notifications_json.url=${BACKSTAGE_NOTIFICATIONS_URL:http://backstage-backstage.rhdh-operator/api/notifications/}
\ No newline at end of file
diff --git a/mta-v7.x/argfile.conf b/mta-v7.x/argfile.conf
new file mode 100644
index 00000000..cfa97cf8
--- /dev/null
+++ b/mta-v7.x/argfile.conf
@@ -0,0 +1,4 @@
+BUILDER_IMAGE=brew.registry.redhat.io/rh-osbs/openshift-serverless-1-logic-swf-builder-rhel8@sha256:012439f21f964478225a459042f6e1dc14f63fdf4ae089c4ee5e613814682a27
+FLOW_NAME=MTA Serverless Workflow
+FLOW_SUMMARY=MTA Serverless Workflow
+FLOW_DESCRIPTION=MTA workflow consumes a source code repo and asses if it can be migrated
diff --git a/mta-v7.x/mta.svg b/mta-v7.x/mta.svg
index 4a196a28..21c75b19 100644
--- a/mta-v7.x/mta.svg
+++ b/mta-v7.x/mta.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/mta-v7.x/mta.sw.yaml b/mta-v7.x/mta.sw.yaml
index d3d2543b..c4e3a74d 100644
--- a/mta-v7.x/mta.sw.yaml
+++ b/mta-v7.x/mta.sw.yaml
@@ -18,6 +18,8 @@ functions:
operation: "{application: .applications|map(select(.repository.url == .repositoryURL))[0]}"
- name: getApplication
operation: specs/mta.json#getApplications
+ - name: getApplicationAnalysis
+ operation: specs/mta.json#getApplicationAnalysis
- name: createApplication
operation: specs/mta.json#createApplication
- name: createTaskgroup
@@ -55,6 +57,14 @@ functions:
- name: logInfo
type: custom
operation: "sysout:INFO"
+ - name: countMandatoriesIncidents
+ type: expression
+ operation: .applicationAnalysis | [select (.issues[].category=="mandatory")][0] | [.issues[]?.incidents //[]] | .[-1][-1].id
+ # cat anal.json | jq '. | [select (.issues[].category=="mandatory")][0] | [.issues[]?.incidents //[]] | .[-1][-1].id'
+ - name: countNonMandatoriesIncidents
+ type: expression
+ operation: .applicationAnalysis | [select (.issues[].category!="mandatory")][0] | [.issues[]?.incidents //[]] | .[-1][-1].id
+
states:
- name: GetApplication
type: operation
@@ -164,14 +174,65 @@ states:
- name: checkReportDone
type: switch
dataConditions:
- - condition: (.taskgroup.state == "Ready" and (.taskgroup.tasks[0].state == "Running" or .taskgroup.tasks[0].state == "Pending"))
+ - condition: (.taskgroup.state == "Ready" and (.taskgroup.tasks[0].state == "Running" or (.taskgroup.tasks[0].state == "Pending" or .taskgroup.tasks[0].state == "Postponed")))
transition: pollResults
- - condition: (.taskgroup.state == "Ready" and .exportToIssueManager == "true" and .taskgroup.tasks[0].state == "Succeeded")
- transition: GetTrackers
- - condition: (.taskgroup.state == "Ready" and .exportToIssueManager == "false" and .taskgroup.tasks[0].state == "Succeeded")
- transition: NotifyCompletion
+ name: taskNotCompleted
- condition: (.taskgroup.state == "Ready" and .taskgroup.tasks[0].state == "Failed")
transition: NotifyFailureBackstage
+ name: taskFailed
+ defaultCondition:
+ transition: GetApplicationAnalysis
+ - name: GetApplicationAnalysis
+ type: operation
+ actionMode: sequential
+ actions:
+ - name: getApp
+ functionRef:
+ refName: getApplicationAnalysis
+ arguments:
+ id: .application.id
+ actionDataFilter:
+ toStateData: ".applicationAnalysis"
+ transition: CountMandatoriesIncidents
+ - name: CountMandatoriesIncidents
+ type: operation
+ actionMode: sequential
+ actions:
+ - name: countApplicationMandatoryIncident
+ actionDataFilter:
+ toStateData: .application.mandatoriesIncidents
+ functionRef:
+ refName: countMandatoriesIncidents
+ - name: "logMandatoriesIncidents"
+ functionRef:
+ refName: "logInfo"
+ arguments:
+ message: "\"Mandatory incidents: \\(.application.mandatoriesIncidents|tostring)\""
+ transition: CountNonMandatoriesIncidents
+ - name: CountNonMandatoriesIncidents
+ type: operation
+ actionMode: sequential
+ actions:
+ - name: countApplicationNotMandatoryIncident
+ actionDataFilter:
+ toStateData: .application.nonMandatoriesIncidents
+ functionRef:
+ refName: countNonMandatoriesIncidents
+ - name: "logNonMandatoriesIncidents"
+ functionRef:
+ refName: "logInfo"
+ arguments:
+ message: "\"Non-mandatory incidents: \\(.application.nonMandatoriesIncidents|tostring)\""
+ transition: CheckMandatoriesIncidents
+ - name: CheckMandatoriesIncidents
+ type: switch
+ dataConditions:
+ - condition: .application.mandatoriesIncidents > 0
+ transition: NotifyMandatoriesIncidentsInApplication
+ name: hasMandatoriesIncidents
+ - condition: (.application.mandatoriesIncidents == 0 and .exportToIssueManager == "true")
+ transition: GetTrackers
+ name: NotifyTracker
defaultCondition:
transition: NotifyCompletion
- name: GetTrackers
@@ -359,7 +420,7 @@ states:
refName: createNotification
arguments:
title: "MTA analysis completed"
- message: '"MTA analysis is completed and the report for " + .application.repository.url + " is ready."'
+ message: '"MTA analysis is completed with " + (.application.nonMandatoriesIncidents|tostring) + " non mandatories incidents and the report for " + .application.repository.url + " is ready."'
origin: "MTA Analysis Workflow"
topic: "MTA Analysis Workflow"
targetUsers: if .backstageUser != null then [.backstageUser] else [] end
@@ -386,4 +447,21 @@ states:
topic: "MTA Analysis Workflow"
targetUsers: if .backstageUser != null then [.backstageUser] else [] end
targetGroups: if .backstageGroup != null then [.backstageGroup] else [] end
+ end: true
+ - name: NotifyMandatoriesIncidentsInApplication
+ type: operation
+ actions:
+ - condition: .backstageUser != null or .backstageGroup != null
+ functionRef:
+ refName: createNotification
+ arguments:
+ title: "MTA analysis ended with incidents in mandatories issues"
+ message: '"MTA analysis for " + .application.repository.url + " completed with " + (.application.mandatoriesIncidents|tostring) +" incidents in mandatories issues. Check the analysis report."'
+ origin: "MTA Analysis Workflow"
+ topic: "MTA Analysis Workflow"
+ targetUsers: if .backstageUser != null then [.backstageUser] else [] end
+ targetGroups: if .backstageGroup != null then [.backstageGroup] else [] end
+ actions:
+ - title: "View analysis report"
+ url: "$SECRET.mta.url + \"/applications/\" + (.application.id|tostring)+ \"/analysis\""
end: true
\ No newline at end of file
diff --git a/mta-v7.x/specs/mta.json b/mta-v7.x/specs/mta.json
index 144c71a2..57a952bb 100644
--- a/mta-v7.x/specs/mta.json
+++ b/mta-v7.x/specs/mta.json
@@ -42,7 +42,7 @@
{
"bearerAuth": []
}
- ]
+ ]
},
"post": {
"operationId": "createMigrationwave",
@@ -117,7 +117,7 @@
{
"bearerAuth": []
}
- ]
+ ]
}
},
"/hub/taskgroups/{id}/submit": {
@@ -191,7 +191,7 @@
{
"bearerAuth": []
}
- ]
+ ]
}
},
"/hub/trackers/{id}": {
@@ -298,7 +298,6 @@
],
"x-codegen-request-body-name": "application"
}
-
},
"/hub/applications/{id}": {
"get": {
@@ -410,7 +409,39 @@
]
}
},
-
+ "/hub/applications/{id}/analysis": {
+ "get": {
+ "tags": [
+ "analyses"
+ ],
+ "operationId": "getApplicationAnalysis",
+ "summary": "Get the latest analysis.",
+ "description": "Get the latest analysis for an application.",
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "description": "Application ID",
+ "required": true,
+ "schema": {
+ "type": "integer"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "OK",
+ "content": {
+ "application/octet-stream": {
+ "schema": {
+ "$ref": "#/components/schemas/api.Analysis"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
"/hub/taskgroups": {
"get": {
"operationId": "getTaskgroups",
@@ -513,7 +544,7 @@
{
"bearerAuth": []
}
- ]
+ ]
},
"put": {
"operationId": "updateTaskGroups",
@@ -878,7 +909,6 @@
}
}
},
-
"components": {
"schemas": {
"api.Addon": {
@@ -2848,7 +2878,7 @@
}
}
}
- },
+ },
"securitySchemes": {
"bearerAuth": {
"type": "http",
@@ -2858,4 +2888,4 @@
}
},
"x-original-swagger-version": "2.0"
-}
+}
\ No newline at end of file
diff --git a/mta-v7.x/specs/notifications.json b/mta-v7.x/specs/notifications.json
index 878996d8..ba19b665 100644
--- a/mta-v7.x/specs/notifications.json
+++ b/mta-v7.x/specs/notifications.json
@@ -11,11 +11,6 @@
"description": "notifications plugin"
}
],
- "servers": [
- {
- "url": "http://localhost:7007/api/notifications"
- }
- ],
"paths": {
"/notifications": {
"post": {
diff --git a/shared/specs/notifications-openapi.yaml b/shared/specs/notifications-openapi.yaml
index f3e72ee3..56d7729a 100644
--- a/shared/specs/notifications-openapi.yaml
+++ b/shared/specs/notifications-openapi.yaml
@@ -7,8 +7,6 @@ info:
tags:
- name: notifications
description: notifications plugin
-servers:
- - url: http://localhost:7007/api/notifications
paths:
/:
post: