konveyor / tackle-pathfinder

Tackle Pathfinder application
Apache License 2.0
16 stars 23 forks source link

Tackle-196 landscape report #67

Closed jonathanvila closed 3 years ago

jonathanvila commented 3 years ago

Issue : https://github.com/konveyor/tackle-pathfinder/issues/66

Features covered

Unit , Integration and End2End Tests cases covered

Pre steps Minikube:

  1. Install minikube : https://minikube.sigs.k8s.io/docs/start/
  2. Start minikube : minikube start --kubernetes-version=v1.20.2 --cpus 4 --memory 12000
  3. Enable ingress addons : minikube addons enable ingress
  4. Create tackle namespace
    kubectl create namespace tackle
  5. Deploy tackle ( to have the keycloak instance running ) on your K8s cluster
    $ kubectl apply -f  https://raw.githubusercontent.com/konveyor/tackle/main/kubernetes/kubernetes-tackle.yaml -n tackle
  6. Edit the Ingress object to allow direct request to Pathfinder API
    $ kubectl edit ingress tackle -n tackle

    Add this below paths:

     - backend:
          service:
            name: tackle-pathfinder
            port:
              number: 8080 
        path: /pathfinder
        pathType: ImplementationSpecific
  7. Build and push
    $ ./mvnw -U -B package -Dquarkus.container-image.push=true -Dquarkus.container-image.group={your quay user} -Dquarkus.container-image.registry=quay.io -Dquarkus.container-image.username={your quay user} -Dquarkus.container-image.password={your quay pwd} -Pnative
  8. Change the image in the deployment tackle-pathfinder to be the one you have pushed
  9. Rollout to update the image
    $ kubectl rollout restart deployment tackle-pathfinder -n tackle

Test case with Minikube : Do the full API test

$ .github/scripts/check_api.sh

Expect

+++++ API CHECK SUCCESSFUL ++++++

Pre steps non containerised local test:

  1. run keycloak
    podman run -it --name keycloak --rm \     
            -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin -e KEYCLOAK_IMPORT=/tmp/keycloak/quarkus-realm.json \
            -e DB_VENDOR=h2 -p 8180:8080 -p 8543:8443 -v ./src/main/resources/keycloak:/tmp/keycloak:Z \
            jboss/keycloak:12.0.2
  2. run postgresql
    podman run -it \                          
            --name postgres-pathfinder -e POSTGRES_USER=pathfinder \                                               
            -e POSTGRES_PASSWORD=pathfinder -e POSTGRES_DB=pathfinder_db \                              
            -p 5433:5432 postgres:10.6
  3. run application
    ./mvnw quarkus:dev

Test case with local non containerised : Do the full API test

$ .github/scripts/check_api.sh localhost:8085 localhost:8180

Expect

+++++ API CHECK SUCCESSFUL ++++++
carlosthe19916 commented 3 years ago

Adding some notes after an internal chat with @jonathanvila :

carlosthe19916 commented 3 years ago

@jonathanvila I just want to clarify/summarize all my previous comments:

  1. Option 1: Currently the backend is returning an array. Can the response return an object containing the total values?. E.g.

    {
    "low": 1,
    "medium": 0,
    "high": 1
    }
  2. Option 2: Let's keep the endpoint as it is but change the name of the endpoint from /assessments/landscape to something like /assessments/assessment-risks (the name is up to you) since the endpoint itself is not creating the Landscape but providing data that will be processed/converted to the landscape report. If you ask me, I would go for this option but I'd like to know your opinion.

jonathanvila commented 3 years ago

@carlosthe19916 :

  1. Calculation : I agree with Option 2. Endpoint = /assessments/assessment-risk
  2. Verb, changing to POST + body
carlosthe19916 commented 3 years ago

Thanks @jonathanvila, this PR looks good to me.