diff --git a/.github/workflows/demo-testing.yml b/.github/workflows/demo-testing.yml index c37b1472..9516e0f8 100644 --- a/.github/workflows/demo-testing.yml +++ b/.github/workflows/demo-testing.yml @@ -38,63 +38,15 @@ jobs: # build all provider images and the analyzer-lsp image - name: build images run: | - function build_image { - dir=$1 - name=$2 - pushd ${dir} - podman build -t quay.io/konveyor/${name}:latest -f Dockerfile . - popd - } - pushd ./external-providers/ - build_image golang-dependency-provider golang-dependency-provider - build_image java-external-provider java-external-provider - build_image yq-external-provider yq-external-provider - build_image generic-external-provider generic-external-provider - popd - build_image . analyzer-lsp - + make build-external + podman build -t quay.io/konveyor/analyzer-lsp:latest -f Dockerfile . # run the demo in a podman pod - name: run demo image - run: | - function run_provider { - name=$1 - img=$2 - port=$3 - podman run -d --pod analyzer --name ${name} -v test-data:/analyzer-lsp/examples/:Z \ - quay.io/konveyor/${img}:latest --port ${port} - } - - mkdir /tmp/examples/ && \ - cp -r examples/* /tmp/examples/ && \ - cp -r ./external-providers/java-external-provider/examples/* /tmp/examples/ - podman volume create test-data - podman run --rm -v test-data:/target -v /tmp/examples/:/src/:Z \ - --entrypoint=cp alpine -a /src/. /target/ - podman pod create --name=analyzer - run_provider golang generic-external-provider 9999 - run_provider nodejs generic-external-provider 9998 - run_provider python generic-external-provider 9997 - run_provider java java-external-provider 9996 - run_provider yq yq-external-provider 9995 - - jq 'map( - if .name == "go" then del(.binaryPath) | .address = "localhost:9999" - elif .name == "nodejs" then del(.binaryPath) | .address = "localhost:9998" - elif .name == "python" then del(.binaryPath) | .address = "localhost:9997" - elif .name == "java" then del(.binaryPath) | .address = "localhost:9996" - elif .name == "yaml" then del(.binaryPath) | .address = "localhost:9995" - else . - end - )' provider_container_settings.json | tee provider_container_settings.json - - podman build -f demo.Dockerfile -t localhost/testing:latest - podman run --entrypoint /usr/local/bin/konveyor-analyzer \ - --pod=analyzer \ - -v $(pwd)/demo-dep-output.yaml:/analyzer-lsp/demo-dep-output.yaml:Z \ - -v $(pwd)/demo-output.yaml:/analyzer-lsp/output.yaml:Z \ - localhost/testing:latest --dep-output-file=demo-dep-output.yaml - + run : | + make run-external-providers-pod + podman build -f demo-local.Dockerfile -t localhost/testing:latest + make run-demo-image - name: install yq for testing run: go install github.com/mikefarah/yq/v4@latest @@ -133,4 +85,4 @@ jobs: uses: konveyor/ci/.github/workflows/global-ci.yml@main with: component_name: tackle2-addon-analyzer - api_tests_ref: "${{ needs.test.outputs.api_tests_ref }}" \ No newline at end of file + api_tests_ref: "${{ needs.test.outputs.api_tests_ref }}" diff --git a/.github/workflows/pr-testing.yml b/.github/workflows/pr-testing.yml index 04581fac..e8ce1d1e 100644 --- a/.github/workflows/pr-testing.yml +++ b/.github/workflows/pr-testing.yml @@ -10,7 +10,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: '1.20' - name: Test run: go test -v ./... diff --git a/Dockerfile b/Dockerfile index 0536b561..8bfaa2de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.19 as builder +FROM golang:1.20 as builder WORKDIR /analyzer-lsp COPY cmd /analyzer-lsp/cmd diff --git a/Makefile b/Makefile index 2e3b7aac..9e19dcce 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ DOCKER_IMAGE = test -build: analyzer deps external-generic golang-dependency-provider yq-external-provider java-external-provider +build: analyzer deps golang-dependency-provider external-generic yq-external-provider java-external-provider analyzer: go build -o konveyor-analyzer ./cmd/analyzer/main.go @@ -22,3 +22,72 @@ deps: image-build: docker build -f Dockerfile . -t $(DOCKER_IMAGE) + +build-external: build-dotnet-provider build-golang-dep-provider build-generic-provider build-java-provider build-yq-provider + +build-dotnet-provider: + cd external-providers/dotnet-external-provider/ && go mod edit --replace=github.com/konveyor/analyzer-lsp=/analyzer-lsp + podman build -f external-providers/dotnet-external-provider/Dockerfile -t dotnet-provider . + +build-generic-provider: + cd external-providers/generic-external-provider/ && go mod edit --replace=github.com/konveyor/analyzer-lsp=/analyzer-lsp + sed -i 's,quay.io/konveyor/golang-dependency-provider,golang-dep-provider,g' external-providers/generic-external-provider/Dockerfile + podman build -f external-providers/generic-external-provider/Dockerfile -t generic-provider . + +build-golang-dep-provider: + cd external-providers/golang-dependency-provider/ && go mod edit --replace=github.com/konveyor/analyzer-lsp=/analyzer-lsp + podman build -f external-providers/golang-dependency-provider/Dockerfile -t golang-dep-provider . + +build-java-provider: + cd external-providers/java-external-provider/ && go mod edit --replace=github.com/konveyor/analyzer-lsp=/analyzer-lsp + podman build -f external-providers/java-external-provider/Dockerfile -t java-provider . + +build-yq-provider: + cd external-providers/yq-external-provider/ && go mod edit --replace=github.com/konveyor/analyzer-lsp=/analyzer-lsp + podman build -f external-providers/yq-external-provider/Dockerfile -t yq-provider . + +run-external-providers-local: + podman run --name java-provider -d -p 14651:14651 -v $(PWD)/external-providers/java-external-provider/examples:/examples java-provider --port 14651 + podman run --name yq -d -p 14652:14652 -v $(PWD)/examples:/examples yq-provider --port 14652 + podman run --name golang-provider -d -p 14653:14653 -v $(PWD)/examples:/examples generic-provider --port 14653 + podman run --name nodejs -d -p 14654:14654 -v $(PWD)/examples:/examples generic-provider --port 14654 --name nodejs + podman run --name python -d -p 14655:14655 -v $(PWD)/examples:/examples generic-provider --port 14655 --name pylsp + +stop-external-providers: + podman kill java-provider || true + podman kill yq || true + podman kill golang-provider || true + podman kill nodejs || true + podman kill python || true + podman rm java-provider || true + podman rm yq || true + podman rm golang-provider || true + podman rm nodejs || true + podman rm python || true + cd external-providers/yq-external-provider/ && go mod edit --dropreplace=github.com/konveyor/analyzer-lsp + cd external-providers/java-external-provider/ && go mod edit --dropreplace=github.com/konveyor/analyzer-lsp + cd external-providers/golang-dependency-provider/ && go mod edit --dropreplace=github.com/konveyor/analyzer-lsp + cd external-providers/generic-external-provider/ && go mod edit --dropreplace=github.com/konveyor/analyzer-lsp + cd external-providers/dotnet-external-provider/ && go mod edit --dropreplace=github.com/konveyor/analyzer-lsp + +run-external-providers-pod: + podman volume create test-data + # copy data to test data volume + podman run --rm -v test-data:/target -v $(PWD)/examples:/src/ --entrypoint=cp alpine -a /src/. /target/ + podman run --rm -v test-data:/target -v $(PWD)/external-providers/java-external-provider/examples:/src/ --entrypoint=cp alpine -a /src/. /target/ + # run pods w/ defined ports for the test volumes + podman pod create --name=analyzer + podman run --pod analyzer --name java-provider -d -v test-data:/analyzer-lsp/examples java-provider --port 14651 + podman run --pod analyzer --name yq -d -v test-data:/analyzer-lsp/examples yq-provider --port 14652 + podman run --pod analyzer --name golang-provider -d -v test-data:/analyzer-lsp/examples generic-provider --port 14653 + podman run --pod analyzer --name nodejs -d -v test-data:/analyzer-lsp/examples generic-provider --port 14654 --name nodejs + podman run --pod analyzer --name python -d -v test-data:/analyzer-lsp/examples generic-provider --port 14655 --name pylsp + podman build -f demo-local.Dockerfile -t localhost/testing:latest + +run-demo-image: + podman run --entrypoint /usr/local/bin/konveyor-analyzer --pod=analyzer -v $(PWD)/demo-dep-output.yaml:/analyzer-lsp/demo-dep-output.yaml:Z -v $(PWD)/demo-output.yaml:/analyzer-lsp/output.yaml:Z localhost/testing:latest --dep-output-file=demo-dep-output.yaml + +stop-external-providers-pod: + podman pod kill analyzer + podman pod rm analyzer + podman volume rm test-data diff --git a/demo-dep-output.yaml b/demo-dep-output.yaml index 2ca5994c..177ed426 100644 --- a/demo-dep-output.yaml +++ b/demo-dep-output.yaml @@ -333,16 +333,16 @@ version: 2.7.7 type: compile indirect: true - resolvedIdentifier: 83cd2cd674a217ade95a4bb83a8a14f351f48bd0 + resolvedIdentifier: 52f15b99911ab8b8bc8744675f5cf1994a626fb8 extras: artifactId: antlr baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: antlr pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -352,7 +352,7 @@ - name: ch.qos.logback.logback-classic version: 1.1.7 type: compile - resolvedIdentifier: 9865cf6994f9ff13fce0bf93f2054ef6c65bb462 + resolvedIdentifier: 044c01db0f7d7aac366fb952a89c10251ed86f44 extras: artifactId: logback-classic groupId: ch.qos.logback @@ -365,16 +365,16 @@ version: 1.1.7 type: compile indirect: true - resolvedIdentifier: 7873092d39ef741575ca91378a6a21c388363ac8 + resolvedIdentifier: 6d1bdb1e28c56a8f989366b339f0f62545696e6d extras: artifactId: logback-core baseDep: - name: ch.qos.logback.logback-classic - version: 1.1.7 extras: artifactId: logback-classic groupId: ch.qos.logback pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: ch.qos.logback.logback-classic + version: 1.1.7 groupId: ch.qos.logback pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -385,16 +385,16 @@ version: 1.5.1 type: compile indirect: true - resolvedIdentifier: 3fe0bed568c62df5e89f4f174c101eab25345b6c + resolvedIdentifier: d5d564526c142037daead331ee5278c088777858 extras: artifactId: classmate baseDep: - name: org.hibernate.validator.hibernate-validator - version: 6.2.0.Final extras: artifactId: hibernate-validator groupId: org.hibernate.validator pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.validator.hibernate-validator + version: 6.2.0.Final groupId: com.fasterxml pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -405,16 +405,16 @@ version: 2.12.3 type: compile indirect: true - resolvedIdentifier: 7275513412694a1aafd08c0287f48469fa0e6e17 + resolvedIdentifier: 87859f29ceebfab7a873c3b4f4b89c9a594b2842 extras: artifactId: jackson-annotations baseDep: - name: com.fasterxml.jackson.core.jackson-databind - version: 2.12.3 extras: artifactId: jackson-databind groupId: com.fasterxml.jackson.core pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: com.fasterxml.jackson.core.jackson-databind + version: 2.12.3 groupId: com.fasterxml.jackson.core pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -424,7 +424,7 @@ - name: com.fasterxml.jackson.core.jackson-core version: 2.12.3 type: compile - resolvedIdentifier: deb23fe2a7f2b773e18ced2b50d4acc1df8fa366 + resolvedIdentifier: ef6abf067337134089d074f411306a51f11a4d62 extras: artifactId: jackson-core groupId: com.fasterxml.jackson.core @@ -436,7 +436,7 @@ - name: com.fasterxml.jackson.core.jackson-databind version: 2.12.3 type: compile - resolvedIdentifier: d6153f8fc60c479ab0f9efb35c034526436a4953 + resolvedIdentifier: 2b186d9cc73cfb9272171357d17f0979eac44889 extras: artifactId: jackson-databind groupId: com.fasterxml.jackson.core @@ -449,16 +449,16 @@ version: 2.12.3 type: runtime indirect: true - resolvedIdentifier: f69c636438dcf19c49960c1fe8901320ab85f989 + resolvedIdentifier: db7822a553c167e95bdda25d0d6db44bd3abf847 extras: artifactId: jackson-datatype-jsr310 baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: com.fasterxml.jackson.datatype pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -468,7 +468,7 @@ - name: com.oracle.database.jdbc.ojdbc8 version: 21.1.0.0 type: compile - resolvedIdentifier: 50044485aea10afd7defeee8109c5195b4d3cae2 + resolvedIdentifier: dea0cca54c29d3e44167cd80839692b325ae2daf extras: artifactId: ojdbc8 groupId: com.oracle.database.jdbc @@ -481,16 +481,16 @@ version: 3.0.7 type: compile indirect: true - resolvedIdentifier: c197c86ceec7318b1284bffb49b54226ca774003 + resolvedIdentifier: 8eb4c6b0e9b0a1fadf53fce8b3fc8415b00469ef extras: artifactId: istack-commons-runtime baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: com.sun.istack pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -501,16 +501,16 @@ version: 1.2.15 type: compile indirect: true - resolvedIdentifier: bb7b7ec0379982b97c62cd17465cb6d9155f68e8 + resolvedIdentifier: 945cf1f4467c72add88309fb05cdf5e340b569f9 extras: artifactId: FastInfoset baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: com.sun.xml.fastinfoset pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -520,7 +520,7 @@ - name: io.konveyor.demo.config-utils version: 1.0.0 type: compile - resolvedIdentifier: FE4FE11AAEE77BE10035218537FBF4B2E6EF1D9F + resolvedIdentifier: 4010193B2F96CC7B7056C4CD51C3188FBBBC86E0 extras: artifactId: config-utils groupId: io.konveyor.demo @@ -533,16 +533,16 @@ version: 1.7.0 type: compile indirect: true - resolvedIdentifier: bc7dc1605f2099dc3c39156b7f62ac889f54fb67 + resolvedIdentifier: fd50ef746ed294d4e064c0cd3a14ca08543d139c extras: artifactId: micrometer-core baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: io.micrometer pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -553,16 +553,16 @@ version: 1.3.5 type: compile indirect: true - resolvedIdentifier: 59eb84ee0d616332ff44aba065f3888cf002cd2d + resolvedIdentifier: beb7649988a22ea30a17fcaeba8584323e86df74 extras: artifactId: jakarta.annotation-api baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: jakarta.annotation pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -573,16 +573,16 @@ version: 2.0.2 type: compile indirect: true - resolvedIdentifier: 5eacc6522521f7eacb081f95cee1e231648461e7 + resolvedIdentifier: fc029778f5494ed05e5833f8bdb57e36dbda38aa extras: artifactId: jakarta.validation-api baseDep: - name: org.hibernate.validator.hibernate-validator - version: 6.2.0.Final extras: artifactId: hibernate-validator groupId: org.hibernate.validator pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.validator.hibernate-validator + version: 6.2.0.Final groupId: jakarta.validation pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -593,16 +593,16 @@ version: 1.2.0 type: compile indirect: true - resolvedIdentifier: 85262acf3ca9816f9537ca47d5adeabaead7cb16 + resolvedIdentifier: 1aa9ef58e50ba6868b2e955d61fcd73be5b4cea5 extras: artifactId: javax.activation-api baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: javax.activation pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -613,16 +613,16 @@ version: "2.2" type: compile indirect: true - resolvedIdentifier: 25665ac8c0b62f50e6488173233239120fc52c96 + resolvedIdentifier: ac7080de51fc0596317c15e12ed441f7c0a84d09 extras: artifactId: javax.persistence-api baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: javax.persistence pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -633,16 +633,16 @@ version: 2.3.1 type: compile indirect: true - resolvedIdentifier: 8531ad5ac454cc2deb9d4d32c40c4d7451939b5d + resolvedIdentifier: c42c51ae84892b73ef7de5351188908e673f5c69 extras: artifactId: jaxb-api baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: javax.xml.bind pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -653,16 +653,16 @@ version: 1.10.22 type: compile indirect: true - resolvedIdentifier: ef45d7e2cd1c600d279704f492ed5ce2ceb6cdb5 + resolvedIdentifier: 14de25cfee49cd27ae19153674bbb34c04c45d52 extras: artifactId: byte-buddy baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: net.bytebuddy pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -673,16 +673,16 @@ version: 2.14.1 type: compile indirect: true - resolvedIdentifier: cd8858fbbde69f46bce8db1152c18a43328aae78 + resolvedIdentifier: 9199a73770616b1ca0b00f576db3231aaab4876a extras: artifactId: log4j-api baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.apache.logging.log4j pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -693,16 +693,16 @@ version: 2.14.1 type: compile indirect: true - resolvedIdentifier: ce8a86a3f50a4304749828ce68e7478cafbc8039 + resolvedIdentifier: 4638502177d694ad6f429a122e32f84ceba7db41 extras: artifactId: log4j-to-slf4j baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.apache.logging.log4j pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -712,7 +712,7 @@ - name: org.apache.tomcat.tomcat-jdbc version: 9.0.46 type: runtime - resolvedIdentifier: 385cb6cb1f6b26c881cd5c1c6ade5f180712ffdc + resolvedIdentifier: c3b975aba8359ecf35f6fca175c2e843a1d3c107 extras: artifactId: tomcat-jdbc groupId: org.apache.tomcat @@ -725,16 +725,16 @@ version: 9.0.46 type: runtime indirect: true - resolvedIdentifier: 409b519751e104eab51b4347a0d27bf86a4f3bb1 + resolvedIdentifier: 1596051131c8426ebf744e0effed0e0005c87d57 extras: artifactId: tomcat-juli baseDep: - name: org.apache.tomcat.tomcat-jdbc - version: 9.0.46 extras: artifactId: tomcat-jdbc groupId: org.apache.tomcat pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.apache.tomcat.tomcat-jdbc + version: 9.0.46 groupId: org.apache.tomcat pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -744,7 +744,7 @@ - name: org.apache.tomcat.tomcat-servlet-api version: 9.0.46 type: provided - resolvedIdentifier: 8e8a27a3456b71b1da2c8adc902ade71bc91fcb4 + resolvedIdentifier: 1f5ec6292bbca9e6c35172044b5fee0b0a97ef24 extras: artifactId: tomcat-servlet-api groupId: org.apache.tomcat @@ -757,16 +757,16 @@ version: 1.9.6 type: compile indirect: true - resolvedIdentifier: 1651849d48659e5703adc2599e694bf67b8c3fc4 + resolvedIdentifier: 2c4216b8c0f62edf69ec5cdd68619ba2aac5a4a1 extras: artifactId: aspectjrt baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.aspectj pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -777,16 +777,16 @@ version: 3.5.0 type: runtime indirect: true - resolvedIdentifier: 2f50520c8abea66fbd8d26e481d3aef5c673b510 + resolvedIdentifier: 408a4451ff5bdef60400a49657867db100ea0f83 extras: artifactId: checker-qual baseDep: - name: org.postgresql.postgresql - version: 42.2.23 extras: artifactId: postgresql groupId: org.postgresql pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.postgresql.postgresql + version: 42.2.23 groupId: org.checkerframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -797,16 +797,16 @@ version: 2.1.3 type: compile indirect: true - resolvedIdentifier: a75914155a9f5808963170ec20653668a2ffd2fd + resolvedIdentifier: 012854caa63db09d82bf973bc37d7226aaaef463 extras: artifactId: dom4j baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.dom4j pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -817,16 +817,16 @@ version: 2.3.1 type: compile indirect: true - resolvedIdentifier: dd6dda9da676a54c5b36ca2806ff95ee017d8738 + resolvedIdentifier: 1856da23a80b9b1374d925d6dcb4a21db2144204 extras: artifactId: jaxb-runtime baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.glassfish.jaxb pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -837,16 +837,16 @@ version: 2.3.1 type: compile indirect: true - resolvedIdentifier: a09d2c48d3285f206fafbffe0e50619284e92126 + resolvedIdentifier: c78aa440484eab1a6e2104e4fe69d0945a3cb3da extras: artifactId: txw2 baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.glassfish.jaxb pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -857,16 +857,16 @@ version: 2.1.12 type: compile indirect: true - resolvedIdentifier: 6eb7552156e0d517ae80cc2247be1427c8d90452 + resolvedIdentifier: 9797702ee3e52e4be6bfbbc9fd20ac5447e7a541 extras: artifactId: HdrHistogram baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.hdrhistogram pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -877,16 +877,16 @@ version: 5.1.2.Final type: compile indirect: true - resolvedIdentifier: e59ffdbc6ad09eeb33507b39ffcf287679a498c8 + resolvedIdentifier: 573f22ce360cd7a8bcc0dae4deecbe4e8861007d extras: artifactId: hibernate-commons-annotations baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.hibernate.common pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -897,16 +897,16 @@ version: 5.4.32.Final type: compile indirect: true - resolvedIdentifier: 99a5e10bf455337014c190e141ec631e9ff71663 + resolvedIdentifier: 5be381f7b6f3d4f17ce746e4ff54f4b8cdce40e4 extras: artifactId: hibernate-core baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -916,7 +916,7 @@ - name: org.hibernate.hibernate-entitymanager version: 5.4.32.Final type: compile - resolvedIdentifier: 3f60db4097732960ec792c033dbb7c34f1b9e328 + resolvedIdentifier: b315696800e16d33bfb297d66f87a792caa3facc extras: artifactId: hibernate-entitymanager groupId: org.hibernate @@ -928,7 +928,7 @@ - name: org.hibernate.validator.hibernate-validator version: 6.2.0.Final type: compile - resolvedIdentifier: d6b0760dfffbf379cedd02f715ff4c9a2e215921 + resolvedIdentifier: 7f1beda5229a0c99a175603c18b3c66da44f966e extras: artifactId: hibernate-validator groupId: org.hibernate.validator @@ -941,16 +941,16 @@ version: 3.27.0-GA type: compile indirect: true - resolvedIdentifier: f63e6aa899e15eca8fdaa402a79af4c417252213 + resolvedIdentifier: 0b7565662bc91e9648aab437135f32beb040ac15 extras: artifactId: javassist baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.javassist pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -961,16 +961,16 @@ version: 2.2.3.Final type: compile indirect: true - resolvedIdentifier: d3865101f0666b63586683bd811d754517f331ab + resolvedIdentifier: c70053a1326428ec641be311ccf5551a8ec76a63 extras: artifactId: jandex baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.jboss pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -981,16 +981,16 @@ version: 3.4.1.Final type: compile indirect: true - resolvedIdentifier: 40fd4d696c55793e996d1ff3c475833f836c2498 + resolvedIdentifier: 9d82f8eea1b5ed484775517d7588e320f9f7797a extras: artifactId: jboss-logging baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.jboss.logging pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1001,16 +1001,16 @@ version: 1.1.1.Final type: compile indirect: true - resolvedIdentifier: a8485cab9484dda36e9a8c319e76b5cc18797b58 + resolvedIdentifier: 90823b310c573492696ad7e299b694ca2e70b4c1 extras: artifactId: jboss-transaction-api_1.2_spec baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.jboss.spec.javax.transaction pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1021,16 +1021,16 @@ version: "1.8" type: compile indirect: true - resolvedIdentifier: 8cc35f73da321c29973191f2cf143d29d26a1df7 + resolvedIdentifier: cc7022b896125220e51f46fa50f4b68e564ffec1 extras: artifactId: stax-ex baseDep: - name: org.hibernate.hibernate-entitymanager - version: 5.4.32.Final extras: artifactId: hibernate-entitymanager groupId: org.hibernate pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.hibernate.hibernate-entitymanager + version: 5.4.32.Final groupId: org.jvnet.staxex pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1041,16 +1041,16 @@ version: 2.0.3 type: runtime indirect: true - resolvedIdentifier: 769c0b82cb2421c8256300e907298a9410a2a3d3 + resolvedIdentifier: 5baec26b6f9e5b17fdd200fc20af85eead4287c4 extras: artifactId: LatencyUtils baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.latencyutils pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1060,7 +1060,7 @@ - name: org.postgresql.postgresql version: 42.2.23 type: compile - resolvedIdentifier: 9cb217a3d5b640567ed7c6e8c11f389613c81c4d + resolvedIdentifier: cc8565ec39dbfee32c2c87f125162fe8a3010c28 extras: artifactId: postgresql groupId: org.postgresql @@ -1073,16 +1073,16 @@ version: 1.7.30 type: compile indirect: true - resolvedIdentifier: d58bebff8cbf70ff52b59208586095f467656c30 + resolvedIdentifier: f09448bdaeee63bc0644abae571b2d17c83d16c1 extras: artifactId: jul-to-slf4j baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.slf4j pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1093,16 +1093,16 @@ version: 1.7.26 type: compile indirect: true - resolvedIdentifier: 77100a62c2e6f04b53977b9f541044d7d722693d + resolvedIdentifier: 4d3419a58d77c07f49185aaa556a787d50508d27 extras: artifactId: slf4j-api baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.slf4j pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1113,16 +1113,16 @@ version: 2.5.0 type: compile indirect: true - resolvedIdentifier: b07513e04ad906ea69ef84293a123cdb83828f06 + resolvedIdentifier: 48a6c425a45395e1ccfd99fd815c92d069040e43 extras: artifactId: spring-boot baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1133,16 +1133,16 @@ version: 2.5.0 type: compile indirect: true - resolvedIdentifier: e0ac75f1a183f8e6a319a8b03bad1c45d40a2761 + resolvedIdentifier: ee202daac01b6399b857d187cfdbf6d97d6adc8f extras: artifactId: spring-boot-actuator baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1153,16 +1153,16 @@ version: 2.5.0 type: compile indirect: true - resolvedIdentifier: 41956882243e86f8260f649ebdd96597a2ff52a9 + resolvedIdentifier: c527193b5cc67f7534c27860171e44187746aaf5 extras: artifactId: spring-boot-actuator-autoconfigure baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1173,16 +1173,16 @@ version: 2.5.0 type: compile indirect: true - resolvedIdentifier: 64c7bbc941c70895621ed613f38dc66b73ea9341 + resolvedIdentifier: da542216009c858c2e8b32cb595578acc19d2df3 extras: artifactId: spring-boot-autoconfigure baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1193,16 +1193,16 @@ version: 2.5.0 type: compile indirect: true - resolvedIdentifier: a910887c01efcc7d12f3f89a7604d436f26eeb90 + resolvedIdentifier: 391cbf83221ae09c1c0a471b25ab3221dfe46ef1 extras: artifactId: spring-boot-starter baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1212,7 +1212,7 @@ - name: org.springframework.boot.spring-boot-starter-actuator version: 2.5.0 type: compile - resolvedIdentifier: 8fc47befa38bdaa2f2b8f421d8532f03005e2851 + resolvedIdentifier: 76dd6dea415751e05491337b7ff22bd08ae70c7e extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot @@ -1225,16 +1225,16 @@ version: 2.5.0 type: compile indirect: true - resolvedIdentifier: 22401482ba1c5a1dcd3d33e47295779211b913d8 + resolvedIdentifier: 60f06908ef3b39d8c8780898e749c4c846fabb84 extras: artifactId: spring-boot-starter-logging baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1245,16 +1245,16 @@ version: 2.5.1 type: compile indirect: true - resolvedIdentifier: c950ca1a05e928e9fb75420b4ac07713428e9969 + resolvedIdentifier: bceeabb4ef399ba7ff8511f2931e1924a41cc921 extras: artifactId: spring-data-commons baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1264,7 +1264,7 @@ - name: org.springframework.data.spring-data-jpa version: 2.5.1 type: compile - resolvedIdentifier: 881f7ae140f424b3bdb1b0c27a61b93e0bee9fa5 + resolvedIdentifier: 461ebcc9fc00dca10a754b0e96583ce7d281d312 extras: artifactId: spring-data-jpa groupId: org.springframework.data @@ -1277,16 +1277,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: b86edd2455f8c4399068c999beb9ea2a9e7f2047 + resolvedIdentifier: 0bf1d9d12108b8ab2d9d71d5fd5fee02d3ee5bde extras: artifactId: spring-aop baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1297,16 +1297,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: 8b1eacd7aaa12f7d173a2f0836d28bd0c1b098fe + resolvedIdentifier: 654397f55cd4a4734f8b76282e98c88884d0367a extras: artifactId: spring-beans baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1317,16 +1317,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: 330b3957efdcdebe3550b8e2c5d45a4c25496626 + resolvedIdentifier: 67e3176098c81702c76d20977deec8101b3faf8c extras: artifactId: spring-context baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1337,16 +1337,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: 4aad1b62bd347a806fe693c9d67b376a3ad8151c + resolvedIdentifier: 44ce199d05bb1ce9682621cd18953ea307485fc1 extras: artifactId: spring-core baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1357,16 +1357,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: 13351fce0a604957cd6a41478ebb54a953a0245e + resolvedIdentifier: 30bd0b3e802e5ba4e4d9fc68e57cc0e755ba9f9f extras: artifactId: spring-expression baseDep: - name: org.springframework.spring-webmvc - version: 5.3.7 extras: artifactId: spring-webmvc groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.spring-webmvc + version: 5.3.7 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1377,16 +1377,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: ccd8bde38bad689737295fa220e1c70680676d72 + resolvedIdentifier: e1e7c14c73ae5fc616bb941ce8c1e7e62736cadf extras: artifactId: spring-jcl baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1396,7 +1396,7 @@ - name: org.springframework.spring-jdbc version: 5.3.7 type: compile - resolvedIdentifier: 5caf72035a9b8a3a09ef82322cd2497aedddc487 + resolvedIdentifier: a4f87a03116ecde96213642141eb95da05022f51 extras: artifactId: spring-jdbc groupId: org.springframework @@ -1409,16 +1409,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: f1892fe7a6671348d6546facbd40159b7e6f64a2 + resolvedIdentifier: cc6911f3194cb77d493aa626c661789926027446 extras: artifactId: spring-orm baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1429,16 +1429,16 @@ version: 5.3.7 type: compile indirect: true - resolvedIdentifier: 98be572c2bf3bd08724363b0bba71bcef59c4739 + resolvedIdentifier: c6df78e1d9b50b7063e4a196127d75ee9321f68b extras: artifactId: spring-tx baseDep: - name: org.springframework.data.spring-data-jpa - version: 2.5.1 extras: artifactId: spring-data-jpa groupId: org.springframework.data pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.data.spring-data-jpa + version: 2.5.1 groupId: org.springframework pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1448,7 +1448,7 @@ - name: org.springframework.spring-web version: 5.3.7 type: compile - resolvedIdentifier: 49e6a8f45e77f14ef16f82c0413254ef493b785f + resolvedIdentifier: d9f78e0b045d90dc862cd4a39294a468b3cc6ba9 extras: artifactId: spring-web groupId: org.springframework @@ -1460,7 +1460,7 @@ - name: org.springframework.spring-webmvc version: 5.3.7 type: compile - resolvedIdentifier: 8437c7a572177a34607abdaef2f6b8088488f5c0 + resolvedIdentifier: d0f042bff56bb90beabc6ed5d062fb87c69e652a extras: artifactId: spring-webmvc groupId: org.springframework @@ -1473,16 +1473,16 @@ version: "1.28" type: compile indirect: true - resolvedIdentifier: 7cae037c3014350c923776548e71c9feb7a69259 + resolvedIdentifier: 3e38757e3eaf549cccd9bbdfa74b2930c177b8af extras: artifactId: snakeyaml baseDep: - name: org.springframework.boot.spring-boot-starter-actuator - version: 2.5.0 extras: artifactId: spring-boot-starter-actuator groupId: org.springframework.boot pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml + name: org.springframework.boot.spring-boot-starter-actuator + version: 2.5.0 groupId: org.yaml pomPath: /analyzer-lsp/examples/customers-tomcat-legacy/pom.xml labels: @@ -1496,16 +1496,16 @@ version: 2.13.3 type: compile indirect: true - resolvedIdentifier: 7198b3aac15285a49e218e08441c5f70af00fc51 + resolvedIdentifier: 717e3012ee74008533d4e92946ccf49060e84e78 extras: artifactId: jackson-annotations baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: com.fasterxml.jackson.core pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1516,16 +1516,16 @@ version: 2.13.3 type: compile indirect: true - resolvedIdentifier: a27014716e4421684416e5fa83d896ddb87002da + resolvedIdentifier: 1a9b0ebfcda0063950c35f42c7fdce9a34e8b782 extras: artifactId: jackson-core baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: com.fasterxml.jackson.core pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1536,16 +1536,16 @@ version: 2.13.3 type: compile indirect: true - resolvedIdentifier: 56deb9ea2c93a7a556b3afbedd616d342963464e + resolvedIdentifier: 2c0ce6eb612e33616edb250542d0fda62524f717 extras: artifactId: jackson-databind baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: com.fasterxml.jackson.core pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1556,16 +1556,16 @@ version: 2.13.3 type: compile indirect: true - resolvedIdentifier: 9363ded5441b1fee62d5be0604035690ca759a2a + resolvedIdentifier: 79e3dbba4729d503ce3eef93f68caddf213b678d extras: artifactId: jackson-dataformat-yaml baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: com.fasterxml.jackson.dataformat pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1576,16 +1576,16 @@ version: 2.13.3 type: compile indirect: true - resolvedIdentifier: ad2f4c61aeb9e2a8bb5e4a3ed782cfddec52d972 + resolvedIdentifier: b22a52de24b5bd7bcf210f02bd2e75ae1c4a740d extras: artifactId: jackson-datatype-jsr310 baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: com.fasterxml.jackson.datatype pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1596,16 +1596,16 @@ version: 3.12.12 type: runtime indirect: true - resolvedIdentifier: d952189f6abb148ff72aab246aa8c28cf99b469f + resolvedIdentifier: 705a7df4584707ae40db2fb903f921755510567f extras: artifactId: logging-interceptor baseDep: - name: io.fabric8.kubernetes-client - version: 6.0.0 extras: artifactId: kubernetes-client groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client + version: 6.0.0 groupId: com.squareup.okhttp3 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1616,16 +1616,16 @@ version: 3.12.12 type: runtime indirect: true - resolvedIdentifier: d3e1ce1d2b3119adf270b2d00d947beb03fe3321 + resolvedIdentifier: 90c81c59b2eb943ddbe58bc717e3e75bccd518c2 extras: artifactId: okhttp baseDep: - name: io.fabric8.kubernetes-client - version: 6.0.0 extras: artifactId: kubernetes-client groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client + version: 6.0.0 groupId: com.squareup.okhttp3 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1636,16 +1636,16 @@ version: 1.15.0 type: runtime indirect: true - resolvedIdentifier: bc28b5a964c8f5721eb58ee3f3c47a9bcbf4f4d8 + resolvedIdentifier: 87f1520a39a954a9aa185c7fe8f144fa7d597690 extras: artifactId: okio baseDep: - name: io.fabric8.kubernetes-client - version: 6.0.0 extras: artifactId: kubernetes-client groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client + version: 6.0.0 groupId: com.squareup.okio pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1656,16 +1656,16 @@ version: 1.5.0 type: provided indirect: true - resolvedIdentifier: ec2410fdf7e0a3022e7c2a2e6241039d1abc1e98 + resolvedIdentifier: 2143163e070fcd301fbf7b3246ca4854caaabacc extras: artifactId: javax.mail baseDep: - name: javax.javaee-api - version: "7.0" extras: artifactId: javaee-api groupId: javax pomPath: /analyzer-lsp/examples/java/pom.xml + name: javax.javaee-api + version: "7.0" groupId: com.sun.mail pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1675,7 +1675,7 @@ - name: io.fabric8.kubernetes-client version: 6.0.0 type: compile - resolvedIdentifier: d0831d44e12313df8989fc1d4a9c90452f08858e + resolvedIdentifier: 738af0538ca0399331e1d5477edc74b19a43d912 extras: artifactId: kubernetes-client groupId: io.fabric8 @@ -1687,7 +1687,7 @@ - name: io.fabric8.kubernetes-client-api version: 6.0.0 type: compile - resolvedIdentifier: 3f54cdb10f54b413fe4b8a0d4d044d33174bd271 + resolvedIdentifier: fb7ecaa7697fc3ba4157ab7250c542032b6f3b0f extras: artifactId: kubernetes-client-api groupId: io.fabric8 @@ -1700,16 +1700,16 @@ version: 6.0.0 type: runtime indirect: true - resolvedIdentifier: 70690b98acb07a809c55d15d7cf45f53ec1026e1 + resolvedIdentifier: b06ddc26ab91382d2ed02ae6c16f3108a12bef04 extras: artifactId: kubernetes-httpclient-okhttp baseDep: - name: io.fabric8.kubernetes-client - version: 6.0.0 extras: artifactId: kubernetes-client groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1720,16 +1720,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 9e3b0d4caa3d033fa0f71c71d8a535a748b280ba + resolvedIdentifier: dcbf5acf8815378769490abee2170d54ac73732b extras: artifactId: kubernetes-model-admissionregistration baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1740,16 +1740,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: eac63b8dec80e96c4356c91ed0a332415efcb75e + resolvedIdentifier: b053ca57ddd50936e1cfe8e5790b77dd76393944 extras: artifactId: kubernetes-model-apiextensions baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1760,16 +1760,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 4dbda6401058a5fd3a4c6be88fc1bf4f99296c4f + resolvedIdentifier: f23c0d497dd0a99f35a06bdd0a04dd8a4ec92dd2 extras: artifactId: kubernetes-model-apps baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1780,16 +1780,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: b353e45133fbc80791d676b16203ec94c0958b7d + resolvedIdentifier: 1d6c9585a5c33cfb19cc0ac3a27bc17b2c7e4922 extras: artifactId: kubernetes-model-autoscaling baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1800,16 +1800,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 9f14cbfc75d172fa81f3f6ad793bdd45a2decaec + resolvedIdentifier: 32e9e912473abdbc8c70484db3ba733bdc4772f0 extras: artifactId: kubernetes-model-batch baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1820,16 +1820,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 33f5a3f386cddda55003e1616303ab924fcd3ca5 + resolvedIdentifier: aef58e6d3ecff8ab73e92a6a0908159e2956eb91 extras: artifactId: kubernetes-model-certificates baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1840,16 +1840,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 7d45968cf6b9902e37d5d542f42ee2daed203e3d + resolvedIdentifier: 5451f267796cd342bf5ce2306657eae6319e95fa extras: artifactId: kubernetes-model-common baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1860,16 +1860,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: cd454532158351d8ff37616dc33749ca2a85c8d1 + resolvedIdentifier: b2e8564f0426ba14c96421c9bd611a47431d9618 extras: artifactId: kubernetes-model-coordination baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1880,16 +1880,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 73469e4a7baec7600455d7f4a121c6680e80bf35 + resolvedIdentifier: 9dec469abc198daac6d9260fb432e711dc005655 extras: artifactId: kubernetes-model-core baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1900,16 +1900,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 246ad448a1868b3c601394e21350a9602adef24c + resolvedIdentifier: b10bf58ec0ef527e8d5854b209f45917aa64e667 extras: artifactId: kubernetes-model-discovery baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1920,16 +1920,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 204c2c78a4a8e0b5f5ebc1b788c9f22a8c1b14ab + resolvedIdentifier: ea54163696f03b5827d7dcf47a753b638a886b25 extras: artifactId: kubernetes-model-events baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1940,16 +1940,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 60c9e43f1f34ab9c145798471926c07e13e45ecf + resolvedIdentifier: 22f366518f18974400a50a9b18d69d4481b97e2a extras: artifactId: kubernetes-model-extensions baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1960,16 +1960,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 3b01d9eab7e7d7c9d46d8828202bff78fbdaa7d9 + resolvedIdentifier: a8cce874a1b32d283431966643fdfaa148ede743 extras: artifactId: kubernetes-model-flowcontrol baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -1980,16 +1980,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 1a400f8f7915bd2a68fa075605768d762aaad4cb + resolvedIdentifier: 7406edacfddc43e81fdca5f6b58f9cffcfd6208a extras: artifactId: kubernetes-model-metrics baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2000,16 +2000,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: c87e11bebb26bb48660765b42a68f9577336b799 + resolvedIdentifier: 5abd2eb6209f3c8f27be9d9361f02609a51d8e4a extras: artifactId: kubernetes-model-networking baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2020,16 +2020,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 972706f6dffa518e11c94647cf47e188db6115f6 + resolvedIdentifier: 29b29db3b39c5240b5eda0e6b2ef42e0254be90b extras: artifactId: kubernetes-model-node baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2040,16 +2040,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 15b3011eb5ff48b9fc2bd8bcc4db697ca9ec30e4 + resolvedIdentifier: 2a846f217bd879ecee71c03615c2b714630dca4b extras: artifactId: kubernetes-model-policy baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2060,16 +2060,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 03ad461761d775ff9c252d2b26a4977d22dd0f3a + resolvedIdentifier: 4d218bb7b4b1f6c76d8cfe4ef136813b73973833 extras: artifactId: kubernetes-model-rbac baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2080,16 +2080,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: a5fae7294f5c39fb9d7cffb7280b55ca458c9128 + resolvedIdentifier: 4cca28ace5b98318415d7ffd75f707820d19bf20 extras: artifactId: kubernetes-model-scheduling baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2100,16 +2100,16 @@ version: 6.0.0 type: compile indirect: true - resolvedIdentifier: 6ffa61f9021d07a4a9d785e83a513955a3c48073 + resolvedIdentifier: e944960ca3f380afaa39366f37145c5bb617e6ec extras: artifactId: kubernetes-model-storageclass baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2120,16 +2120,16 @@ version: 0.3.0 type: compile indirect: true - resolvedIdentifier: d3ebf0f291297649b4c8dc3ecc81d2eddedc100d + resolvedIdentifier: 1385fb99630e407ae2821c9a16ccff56c879cdc9 extras: artifactId: zjsonpatch baseDep: - name: io.fabric8.kubernetes-client - version: 6.0.0 extras: artifactId: kubernetes-client groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client + version: 6.0.0 groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2139,7 +2139,7 @@ - name: io.netty.netty-buffer version: 4.1.76.Final type: runtime - resolvedIdentifier: 231f5042a5050773eb22a918e84daff3f00892f2 + resolvedIdentifier: 453d1177e8b3194ef1111ad72d6d5a245c888975 extras: artifactId: netty-buffer groupId: io.netty @@ -2151,7 +2151,7 @@ - name: io.netty.netty-common version: 4.1.76.Final type: runtime - resolvedIdentifier: 38d0b500f098dc89497b6e608d7427186f533cf0 + resolvedIdentifier: 40049284125ae2450120801fe3df7f605ce29ee1 extras: artifactId: netty-common groupId: io.netty @@ -2164,16 +2164,16 @@ version: 4.1.76.Final type: runtime indirect: true - resolvedIdentifier: e0b225a33772cb7bba73dc296cccefa6826ab8cc + resolvedIdentifier: afc436aa5f9368bd10e1653a6531dfda0883fa5f extras: artifactId: netty-resolver baseDep: - name: io.netty.netty-transport - version: 4.1.76.Final extras: artifactId: netty-transport groupId: io.netty pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.netty.netty-transport + version: 4.1.76.Final groupId: io.netty pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2183,7 +2183,7 @@ - name: io.netty.netty-transport version: 4.1.76.Final type: runtime - resolvedIdentifier: f01d2f935005b6fdb2fedc23114d2ae717749c36 + resolvedIdentifier: fb77aebb06acd640d8dc2c50dcc531c59c7e1696 extras: artifactId: netty-transport groupId: io.netty @@ -2195,7 +2195,7 @@ - name: io.netty.netty-transport-classes-epoll version: 4.1.76.Final type: runtime - resolvedIdentifier: 921b92a76116674218af3dc4bbf43d73884e4146 + resolvedIdentifier: e7b89664fddac0b494a8d3492ac532ccf8ed7c06 extras: artifactId: netty-transport-classes-epoll groupId: io.netty @@ -2220,7 +2220,7 @@ - name: io.netty.netty-transport-native-unix-common version: 4.1.76.Final type: runtime - resolvedIdentifier: d5ed8c4be9680203c53f7ed788225c12c4d87ee0 + resolvedIdentifier: 9c1755c00652bd1d568c49bae7c6da56f5dabac6 extras: artifactId: netty-transport-native-unix-common groupId: io.netty @@ -2233,16 +2233,16 @@ version: "1.1" type: provided indirect: true - resolvedIdentifier: e6cb541461c2834bdea3eb920f1884d1eb508b50 + resolvedIdentifier: fd9dd0faa8f03f3ce0dc4eec22e57e818d8b9897 extras: artifactId: activation baseDep: - name: javax.javaee-api - version: "7.0" extras: artifactId: javaee-api groupId: javax pomPath: /analyzer-lsp/examples/java/pom.xml + name: javax.javaee-api + version: "7.0" groupId: javax.activation pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2252,7 +2252,7 @@ - name: javax.javaee-api version: "7.0" type: provided - resolvedIdentifier: 51399f902cc27a808122edcbebfaa1ad989954ba + resolvedIdentifier: e54c73cdc03722ed6c66d02cf27d10970ca0cec1 extras: artifactId: javaee-api groupId: javax @@ -2264,7 +2264,7 @@ - name: junit.junit version: "4.11" type: test - resolvedIdentifier: 4e031bb61df09069aeb2bffb4019e7a5034a4ee0 + resolvedIdentifier: cddf7490ffe839978cf5d6c944c01f2a8cb70a49 extras: artifactId: junit groupId: junit @@ -2277,16 +2277,16 @@ version: "1.3" type: test indirect: true - resolvedIdentifier: 42a25dc3219429f0e5d060061f71acb49bf010a0 + resolvedIdentifier: 872e413497b906e7c9fa85ccc96046c5d1ef7ece extras: artifactId: hamcrest-core baseDep: - name: junit.junit - version: "4.11" extras: artifactId: junit groupId: junit pomPath: /analyzer-lsp/examples/java/pom.xml + name: junit.junit + version: "4.11" groupId: org.hamcrest pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2297,16 +2297,16 @@ version: 1.7.36 type: compile indirect: true - resolvedIdentifier: 6c62681a2f655b49963a5983b8b0950a6120ae14 + resolvedIdentifier: 749f6995b1d6591a417ca4fd19cdbddabae16fd1 extras: artifactId: slf4j-api baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: org.slf4j pomPath: /analyzer-lsp/examples/java/pom.xml labels: @@ -2317,16 +2317,16 @@ version: "1.30" type: compile indirect: true - resolvedIdentifier: 8fde7fe2586328ac3c68db92045e1c8759125000 + resolvedIdentifier: 767ab0a7a346f60dad0acebe318e335a5d27fe55 extras: artifactId: snakeyaml baseDep: - name: io.fabric8.kubernetes-client-api - version: 6.0.0 extras: artifactId: kubernetes-client-api groupId: io.fabric8 pomPath: /analyzer-lsp/examples/java/pom.xml + name: io.fabric8.kubernetes-client-api + version: 6.0.0 groupId: org.yaml pomPath: /analyzer-lsp/examples/java/pom.xml labels: diff --git a/demo-local.Dockerfile b/demo-local.Dockerfile new file mode 100644 index 00000000..60598f00 --- /dev/null +++ b/demo-local.Dockerfile @@ -0,0 +1,16 @@ +FROM quay.io/konveyor/analyzer-lsp + +WORKDIR /analyzer-lsp + +COPY rule-example.yaml /analyzer-lsp/rule-example.yaml +COPY examples /analyzer-lsp/examples +COPY external-providers/java-external-provider/examples /analyzer-lsp/examples + +COPY provider_pod_local_settings.json /analyzer-lsp/provider_settings.json + +RUN python3 -m venv /analyzer-lsp/examples/python/.venv +RUN yes | python3 -m pip install -r /analyzer-lsp/examples/python/requirements.txt + +EXPOSE 16686 + +ENTRYPOINT ["sh", "-c", "all-in-one-linux &> /dev/null & sleep 5 && konveyor-analyzer --enable-jaeger && curl -o traces.json http://localhost:16686/api/traces?service=analyzer-lsp"] diff --git a/demo-output.yaml b/demo-output.yaml index a3670591..5a1b441f 100644 --- a/demo-output.yaml +++ b/demo-output.yaml @@ -308,11 +308,15 @@ incidents: - uri: file:///examples/java/pom.xml message: dependency io.fabric8.kubernetes-client with 6.0.0 is bad and you should feel bad for using it + codeSnip: "26 \n27 \n28 \n29 junit\n30 junit\n31 4.11\n32 test\n33 \n34 \n35 io.fabric8\n36 kubernetes-client\n37 6.0.0\n38 \n39 \n40 io.fabric8\n41 kubernetes-client-api\n42 6.0.0\n43 \n44 \n45 javax\n46 javaee-api" + lineNumber: 35 variables: name: io.fabric8.kubernetes-client version: 6.0.0 - uri: file:///examples/java/pom.xml message: dependency junit.junit with 4.11 is bad and you should feel bad for using it + codeSnip: "20 \n21 UTF-8\n22 1.7\n23 1.7\n24 7.0\n25 \n26 \n27 \n28 \n29 junit\n30 junit\n31 4.11\n32 test\n33 \n34 \n35 io.fabric8\n36 kubernetes-client\n37 6.0.0\n38 \n39 \n40 io.fabric8" + lineNumber: 29 variables: name: junit.junit version: "4.11" @@ -424,6 +428,29 @@ incidents: - uri: file:///examples/java/pom.xml message: If you migrate your application to JBoss EAP 7.3, or later, and want to ensure its Maven building, running or testing works as expected, use instead the Jakarta EE dependency with groupId `com.sun.activation` + codeSnip: |- + 36 kubernetes-client + 37 6.0.0 + 38 + 39 + 40 io.fabric8 + 41 kubernetes-client-api + 42 6.0.0 + 43 + 44 + 45 javax + 46 javaee-api + 47 ${javaee-api.version} + 48 provided + 49 + 50 + 51 + 52 io.netty + 53 netty-transport-native-epoll + 54 4.1.76.Final + 55 linux-x86_64 + 56 runtime + lineNumber: 45 variables: name: javax.activation.activation version: "1.1" @@ -457,16 +484,6 @@ lineNumber: 6 variables: file: file:///examples/python/file_a.py - python-sample-rule-003: - description: "" - category: potential - incidents: - - uri: file:///examples/python/main.py - message: python sample rule 003 - codeSnip: "19 # Create an instance of the API class\n20 api_instance = kubernetes.client.ApiextensionsV1Api(api_client)\n21 body = kubernetes.client.V1CustomResourceDefinition() # V1CustomResourceDefinition | \n22 pretty = 'pretty_example' # str | If 'true', then the output is pretty printed. (optional)\n23 dry_run = 'dry_run_example' # str | When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed (optional)\n24 field_manager = 'field_manager_example' # str | fieldManager is a name associated with the actor or entity that is making these changes. The value must be less than or 128 characters long, and only contain printable characters, as defined by https://golang.org/pkg/unicode/#IsPrint. (optional)\n25 field_validation = 'field_validation_example' # str | fieldValidation instructs the server on how to handle objects in the request (POST/PUT/PATCH) containing unknown or duplicate fields. Valid values are: - Ignore: This will ignore any unknown fields that are silently dropped from the object, and will ignore all but the last duplicate field that the decoder encounters. This is the default behavior prior to v1.23. - Warn: This will send a warning via the standard warning response header for each unknown field that is dropped from the object, and for each duplicate field that is encountered. The request will still succeed if there are no other errors, and will only persist the last of any duplicate fields. This is the default in v1.23+ - Strict: This will fail the request with a BadRequest error if any unknown fields would be dropped from the object, or if any duplicate fields are present. The error returned from the server will contain all unknown and duplicate fields encountered. (optional)\n26 \n27 try:\n28 api_response = api_instance.create_custom_resource_definition(body, pretty=pretty, dry_run=dry_run, field_manager=field_manager, field_validation=field_validation)\n29 pprint(api_response)\n30 except ApiException as e:\n31 print(\"Exception when calling ApiextensionsV1Api->create_custom_resource_definition: %s\\n\" % e)\n" - lineNumber: 28 - variables: - file: file:///examples/python/main.py singleton-sessionbean-00001: description: "" category: potential @@ -788,3 +805,4 @@ unmatched: - file-002 - lang-ref-002 + - python-sample-rule-003 diff --git a/demo.Dockerfile b/demo.Dockerfile index da6cb141..ee8a7050 100644 --- a/demo.Dockerfile +++ b/demo.Dockerfile @@ -6,6 +6,8 @@ COPY rule-example.yaml /analyzer-lsp/rule-example.yaml COPY examples /analyzer-lsp/examples COPY external-providers/java-external-provider/examples /analyzer-lsp/examples +COPY provider_container_settings.json /analyzer-lsp/provider_settings.json + RUN python3 -m venv /analyzer-lsp/examples/python/.venv RUN yes | python3 -m pip install -r /analyzer-lsp/examples/python/requirements.txt diff --git a/engine/engine.go b/engine/engine.go index f2e02a1a..8c448858 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -589,6 +589,12 @@ func (r *ruleEngine) getCodeLocation(ctx context.Context, m IncidentContext, rul return "", nil } + // We need to move this up, because the code only lives in the + // provider's + if rule.Snipper != nil { + return rule.Snipper.GetCodeSnip(m.FileURI, *m.CodeLocation) + } + if strings.HasPrefix(string(m.FileURI), uri.FileScheme) { //Find the file, open it in a buffer. readFile, err := os.Open(m.FileURI.Filename()) @@ -614,9 +620,6 @@ func (r *ruleEngine) getCodeLocation(ctx context.Context, m IncidentContext, rul } return codeSnip, nil } - if rule.Snipper != nil { - return rule.Snipper.GetCodeSnip(m.FileURI, *m.CodeLocation) - } // if it is not a file ask the provider return "", nil diff --git a/external-providers/dotnet-external-provider/Dockerfile b/external-providers/dotnet-external-provider/Dockerfile index 33bfb6a9..6d146c06 100644 --- a/external-providers/dotnet-external-provider/Dockerfile +++ b/external-providers/dotnet-external-provider/Dockerfile @@ -1,13 +1,17 @@ # TODO: fix version mismatch in final container -FROM registry.access.redhat.com/ubi8/go-toolset:latest as go-builder -ENV GOPATH=$APP_ROOT +FROM golang:1.20 as go-builder -COPY Makefile . -COPY go.mod . -COPY go.sum . -COPY main.go . -COPY pkg/ ./pkg -RUN go mod download +COPY / /analyzer-lsp + +WORKDIR /dotnet-provider + +COPY external-providers/dotnet-external-provider/Makefile . +COPY external-providers/dotnet-external-provider/go.mod . +COPY external-providers/dotnet-external-provider/go.sum . +COPY external-providers/dotnet-external-provider/main.go . +COPY external-providers/dotnet-external-provider/pkg/ ./pkg + +RUN go mod tidy RUN make build RUN ADD_PLAT=yes OS=windows make build @@ -46,5 +50,5 @@ USER default EXPOSE 3456 #COPY --from=builder /opt/app-root/src/omnisharp-roslyn-1.39.6/bin/Release/OmniSharp.Stdio.Driver/net6.0/ /opt/app-root/omnisharp -COPY --from=go-builder /opt/app-root/src/bin/ /usr/bin/ +COPY --from=go-builder /dotnet-provider/bin/ /usr/bin/ ENTRYPOINT ["dotnet-external-provider", "-port", "3456"] diff --git a/external-providers/generic-external-provider/Dockerfile b/external-providers/generic-external-provider/Dockerfile index 02ee5abb..7eb08930 100644 --- a/external-providers/generic-external-provider/Dockerfile +++ b/external-providers/generic-external-provider/Dockerfile @@ -1,13 +1,16 @@ FROM golang:1.20 as go-builder +COPY / /analyzer-lsp + WORKDIR /generic-external-provider -COPY go.mod go.mod -COPY go.sum go.sum -RUN go mod download +COPY external-providers/generic-external-provider/go.mod go.mod +COPY external-providers/generic-external-provider/go.sum go.sum + +COPY external-providers/generic-external-provider/main.go main.go +COPY external-providers/generic-external-provider/pkg/ pkg/ +RUN go mod tidy -COPY main.go main.go -COPY pkg/ pkg/ RUN go build -o generic-external-provider main.go FROM quay.io/konveyor/golang-dependency-provider as go-dep-provider @@ -25,6 +28,6 @@ RUN npm install -g typescript-language-server typescript RUN go install golang.org/x/tools/gopls@latest COPY --from=go-builder /generic-external-provider/generic-external-provider /usr/local/bin/generic-external-provider -COPY --from=go-dep-provider /usr/local/bin/go-dependency-provider /usr/local/bin/go-dependency-provider +COPY --from=go-dep-provider /usr/local/bin/golang-dependency-provider /usr/local/bin/golang-dependency-provider -ENTRYPOINT [ "/usr/local/bin/generic-external-provider" ] \ No newline at end of file +ENTRYPOINT [ "/usr/local/bin/generic-external-provider" ] diff --git a/external-providers/generic-external-provider/go.mod b/external-providers/generic-external-provider/go.mod index 12998134..53aad1b7 100644 --- a/external-providers/generic-external-provider/go.mod +++ b/external-providers/generic-external-provider/go.mod @@ -9,6 +9,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/swaggest/openapi-go v0.2.45 go.lsp.dev/uri v0.3.0 + google.golang.org/grpc v1.62.1 gopkg.in/yaml.v2 v2.4.0 ) @@ -31,7 +32,7 @@ require ( golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/grpc v1.54.0 // indirect + google.golang.org/grpc v1.62.1 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect ) diff --git a/external-providers/golang-dependency-provider/Dockerfile b/external-providers/golang-dependency-provider/Dockerfile index a1727cc4..6cdeef8e 100644 --- a/external-providers/golang-dependency-provider/Dockerfile +++ b/external-providers/golang-dependency-provider/Dockerfile @@ -1,16 +1,18 @@ FROM golang:1.20 as go-builder +copy / /analyzer-lsp + WORKDIR /go-dependency-provider -COPY go.mod go.mod -COPY go.sum go.sum -RUN go mod download +COPY external-providers/golang-dependency-provider/go.mod go.mod +COPY external-providers/golang-dependency-provider/go.sum go.sum -COPY main.go main.go -RUN go build -o go-dependency-provider main.go +COPY external-providers/golang-dependency-provider/main.go main.go +RUN go mod tidy +RUN go build -o golang-dependency-provider main.go FROM registry.access.redhat.com/ubi9/ubi-minimal:latest -COPY --from=go-builder /go-dependency-provider/go-dependency-provider /usr/local/bin/go-dependency-provider +COPY --from=go-builder /go-dependency-provider/golang-dependency-provider /usr/local/bin/golang-dependency-provider -ENTRYPOINT [ "/usr/local/bin/go-dependency-provider" ] \ No newline at end of file +ENTRYPOINT [ "/usr/local/bin/golang-dependency-provider" ] diff --git a/external-providers/golang-dependency-provider/go.mod b/external-providers/golang-dependency-provider/go.mod index f51f577a..0b56f85e 100644 --- a/external-providers/golang-dependency-provider/go.mod +++ b/external-providers/golang-dependency-provider/go.mod @@ -5,6 +5,7 @@ go 1.19 require ( github.com/konveyor/analyzer-lsp v0.4.0-alpha.1 go.lsp.dev/uri v0.3.0 + google.golang.org/grpc v1.62.1 // indirect ) require ( @@ -29,7 +30,6 @@ require ( golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5 // indirect - google.golang.org/grpc v1.58.0 // indirect google.golang.org/protobuf v1.33.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/external-providers/java-external-provider/Dockerfile b/external-providers/java-external-provider/Dockerfile index fac0954e..9a7e526f 100644 --- a/external-providers/java-external-provider/Dockerfile +++ b/external-providers/java-external-provider/Dockerfile @@ -1,15 +1,18 @@ # Build the manager binary FROM golang:1.21 as builder +COPY / /analyzer-lsp + WORKDIR /java-provider -COPY go.mod go.mod -COPY go.sum go.sum +COPY external-providers/java-external-provider/go.mod go.mod +COPY external-providers/java-external-provider/go.sum go.sum + -RUN go mod download +COPY external-providers/java-external-provider/main.go main.go +COPY external-providers/java-external-provider/pkg/ pkg/ -COPY main.go main.go -COPY pkg/ pkg/ +RUN go mod tidy RUN go build -a -o java-external-provider main.go diff --git a/external-providers/java-external-provider/go.mod b/external-providers/java-external-provider/go.mod index 967ba3b4..e5afaf10 100644 --- a/external-providers/java-external-provider/go.mod +++ b/external-providers/java-external-provider/go.mod @@ -9,17 +9,20 @@ require ( github.com/vifraa/gopom v1.0.0 go.lsp.dev/uri v0.3.0 go.opentelemetry.io/otel v1.11.2 + google.golang.org/grpc v1.62.1 gopkg.in/yaml.v2 v2.4.0 ) require github.com/sirupsen/logrus v1.9.0 +require google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 // indirect + require ( github.com/PaesslerAG/gval v1.2.2 // indirect github.com/bombsimon/logrusr/v3 v3.0.0 github.com/cbroglie/mustache v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/kr/text v0.1.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect @@ -28,10 +31,8 @@ require ( go.opentelemetry.io/otel/exporters/jaeger v1.11.2 // indirect go.opentelemetry.io/otel/sdk v1.11.2 // indirect go.opentelemetry.io/otel/trace v1.11.2 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/grpc v1.54.0 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/sys v0.18.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/protobuf v1.33.1-0.20240408130810-98873a205002 // indirect ) diff --git a/external-providers/java-external-provider/go.sum b/external-providers/java-external-provider/go.sum index 166adb78..7bd59971 100644 --- a/external-providers/java-external-provider/go.sum +++ b/external-providers/java-external-provider/go.sum @@ -16,12 +16,10 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= @@ -64,22 +62,20 @@ go.opentelemetry.io/otel/sdk v1.11.2 h1:GF4JoaEx7iihdMFu30sOyRx52HDHOkl9xQ8SMqNX go.opentelemetry.io/otel/sdk v1.11.2/go.mod h1:wZ1WxImwpq+lVRo4vsmSOxdd+xwoUJ6rqyLc3SyX9aU= go.opentelemetry.io/otel/trace v1.11.2 h1:Xf7hWSF2Glv0DE3MH7fBHvtpSBsjcBUe5MYAmZM/+y0= go.opentelemetry.io/otel/trace v1.11.2/go.mod h1:4N+yC7QEz7TTsG9BSRLNAa63eg5E06ObSbKPmxQ/pKA= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17 h1:Jyp0Hsi0bmHXG6k9eATXoYtjd6e2UzZ1SCn/wIupY14= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= +google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0= +google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs= +google.golang.org/protobuf v1.33.1-0.20240408130810-98873a205002 h1:V7Da7qt0MkY3noVANIMVBk28nOnijADeOR3i5Hcvpj4= +google.golang.org/protobuf v1.33.1-0.20240408130810-98873a205002/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/external-providers/java-external-provider/main.go b/external-providers/java-external-provider/main.go index 448003be..627d6855 100644 --- a/external-providers/java-external-provider/main.go +++ b/external-providers/java-external-provider/main.go @@ -16,6 +16,7 @@ var ( port = flag.Int("port", 0, "Port must be set") logLevel = flag.Int("log-level", 5, "Level to log") lspServerName = flag.String("name", "java", "Level to log") + contextLines = flag.Int("contxtLines", 10, "lines of context for the code snippet") ) func main() { @@ -28,7 +29,7 @@ func main() { log := logrusr.New(logrusLog) // must use lspServerName for use of multiple grpc providers - client := java.NewJavaProvider(log, *lspServerName) + client := java.NewJavaProvider(log, *lspServerName, *contextLines) if logLevel != nil && *logLevel != 5 { logrusLog.SetLevel(logrus.Level(*logLevel)) diff --git a/external-providers/java-external-provider/pkg/java_external_provider/dependency.go b/external-providers/java-external-provider/pkg/java_external_provider/dependency.go index acaacc42..d980e85e 100644 --- a/external-providers/java-external-provider/pkg/java_external_provider/dependency.go +++ b/external-providers/java-external-provider/pkg/java_external_provider/dependency.go @@ -460,20 +460,20 @@ func (p *javaServiceClient) parseDepString(dep, localRepoPath, pomPath string) ( func resolveDepFilepath(d *provider.Dep, p *javaServiceClient, group string, artifact string, localRepoPath string) string { groupPath := strings.Replace(group, ".", "/", -1) - // Try jar packaging + // Try pom packaging (see https://www.baeldung.com/maven-packaging-types#4-pom) var fp string if d.Classifier == "" { - fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v.%v.sha1", artifact, d.Version, "jar")) + fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v.%v.sha1", artifact, d.Version, "pom")) } else { - fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v-%v.%v.sha1", artifact, d.Version, d.Classifier, "jar")) + fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v-%v.%v.sha1", artifact, d.Version, d.Classifier, "pom")) } b, err := os.ReadFile(fp) if err != nil { - // Try pom packaging (see https://www.baeldung.com/maven-packaging-types#4-pom) + // Try jar packaging if d.Classifier == "" { - fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v.%v.sha1", artifact, d.Version, "pom")) + fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v.%v.sha1", artifact, d.Version, "jar")) } else { - fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v-%v.%v.sha1", artifact, d.Version, d.Classifier, "pom")) + fp = filepath.Join(localRepoPath, groupPath, artifact, d.Version, fmt.Sprintf("%v-%v-%v.%v.sha1", artifact, d.Version, d.Classifier, "jar")) } b, err = os.ReadFile(fp) } diff --git a/external-providers/java-external-provider/pkg/java_external_provider/provider.go b/external-providers/java-external-provider/pkg/java_external_provider/provider.go index dd62d221..e57d2d37 100644 --- a/external-providers/java-external-provider/pkg/java_external_provider/provider.go +++ b/external-providers/java-external-provider/pkg/java_external_provider/provider.go @@ -59,8 +59,8 @@ var locationToCode = map[string]int{ } type javaProvider struct { - config provider.Config - Log logr.Logger + Log logr.Logger + contextLines int clients []provider.ServiceClient @@ -84,7 +84,7 @@ type referenceCondition struct { Location string `yaml:"location"` } -func NewJavaProvider(log logr.Logger, lspServerName string) *javaProvider { +func NewJavaProvider(log logr.Logger, lspServerName string, contextLines int) *javaProvider { _, mvnBinaryError := exec.LookPath("mvn") @@ -94,6 +94,7 @@ func NewJavaProvider(log logr.Logger, lspServerName string) *javaProvider { clients: []provider.ServiceClient{}, lspServerName: lspServerName, depsLocationCache: make(map[string]int), + contextLines: contextLines, } } @@ -318,7 +319,7 @@ func (p *javaProvider) Init(ctx context.Context, log logr.Logger, config provide } // GetLocation given a dep, attempts to find line number, caches the line number for a given dep -func (j *javaProvider) GetLocation(ctx context.Context, dep konveyor.Dep) (engine.Location, error) { +func (j *javaProvider) GetLocation(ctx context.Context, dep konveyor.Dep, file string) (engine.Location, error) { location := engine.Location{StartPosition: engine.Position{}, EndPosition: engine.Position{}} cacheKey := fmt.Sprintf("%s-%s-%s-%v", @@ -366,6 +367,9 @@ func (j *javaProvider) GetLocation(ctx context.Context, dep konveyor.Dep) (engin groupId := dep.Extras[groupIdKey].(string) artifactId := dep.Extras[artifactIdKey].(string) path := dep.Extras[pomPathKey].(string) + if path == "" { + path = file + } if path == "" { return location, fmt.Errorf("unable to get location for dep %s, empty pom path", dep.Name) } diff --git a/external-providers/java-external-provider/pkg/java_external_provider/snipper.go b/external-providers/java-external-provider/pkg/java_external_provider/snipper.go index a15f4228..62b1c109 100644 --- a/external-providers/java-external-provider/pkg/java_external_provider/snipper.go +++ b/external-providers/java-external-provider/pkg/java_external_provider/snipper.go @@ -39,13 +39,13 @@ func (p *javaProvider) scanFile(path string, loc engine.Location) (string, error scanner := bufio.NewScanner(readFile) lineNumber := 0 codeSnip := "" - paddingSize := len(strconv.Itoa(loc.EndPosition.Line + p.config.ContextLines)) + paddingSize := len(strconv.Itoa(loc.EndPosition.Line + p.contextLines)) for scanner.Scan() { - if (lineNumber - p.config.ContextLines) == loc.EndPosition.Line { + if (lineNumber - p.contextLines) == loc.EndPosition.Line { codeSnip = codeSnip + fmt.Sprintf("%*d %v", paddingSize, lineNumber+1, scanner.Text()) break } - if (lineNumber + p.config.ContextLines) >= loc.StartPosition.Line { + if (lineNumber + p.contextLines) >= loc.StartPosition.Line { codeSnip = codeSnip + fmt.Sprintf("%*d %v\n", paddingSize, lineNumber+1, scanner.Text()) } lineNumber += 1 diff --git a/external-providers/yq-external-provider/Dockerfile b/external-providers/yq-external-provider/Dockerfile index dc592fea..0333c5d2 100644 --- a/external-providers/yq-external-provider/Dockerfile +++ b/external-providers/yq-external-provider/Dockerfile @@ -1,13 +1,15 @@ FROM golang:1.20 as go-builder +copy / /analyzer-lsp + WORKDIR /yq-external-provider -COPY go.mod go.mod -COPY go.sum go.sum -RUN go mod download +COPY external-providers/yq-external-provider/go.mod go.mod +COPY external-providers/yq-external-provider/go.sum go.sum -COPY main.go main.go -COPY pkg/ pkg/ +COPY external-providers/yq-external-provider/main.go main.go +COPY external-providers/yq-external-provider/pkg/ pkg/ +RUN go mod tidy RUN go build -o yq-external-provider main.go diff --git a/external-providers/yq-external-provider/go.mod b/external-providers/yq-external-provider/go.mod index 6a77bc8c..09b6daa0 100644 --- a/external-providers/yq-external-provider/go.mod +++ b/external-providers/yq-external-provider/go.mod @@ -9,6 +9,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/swaggest/openapi-go v0.2.45 go.lsp.dev/uri v0.3.0 + google.golang.org/grpc v1.62.1 gopkg.in/yaml.v2 v2.4.0 ) @@ -34,6 +35,5 @@ require ( golang.org/x/sys v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/grpc v1.54.0 // indirect google.golang.org/protobuf v1.33.0 // indirect ) diff --git a/go.mod b/go.mod index 2a492bd6..0c097f3e 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/antchfx/xmlquery v1.3.12 github.com/bombsimon/logrusr/v3 v3.0.0 github.com/go-logr/logr v1.2.3 + github.com/jhump/protoreflect v1.16.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/sirupsen/logrus v1.9.0 github.com/spf13/cobra v1.7.0 @@ -15,16 +16,18 @@ require ( github.com/swaggest/openapi-go v0.2.45 go.lsp.dev/uri v0.3.0 go.opentelemetry.io/otel/trace v1.11.2 - google.golang.org/grpc v1.54.0 - google.golang.org/protobuf v1.33.0 + google.golang.org/grpc v1.62.1 + google.golang.org/protobuf v1.33.1-0.20240408130810-98873a205002 gopkg.in/yaml.v2 v2.4.0 ) require ( + github.com/bufbuild/protocompile v0.10.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/kr/pretty v0.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/swaggest/refl v1.3.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect ) @@ -33,14 +36,13 @@ require ( github.com/cbroglie/mustache v1.3.0 github.com/go-logr/stdr v1.2.2 // indirect github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/hashicorp/go-version v1.6.0 github.com/shopspring/decimal v1.3.1 // indirect go.opentelemetry.io/otel v1.11.2 go.opentelemetry.io/otel/exporters/jaeger v1.11.2 go.opentelemetry.io/otel/sdk v1.11.2 - golang.org/x/net v0.17.0 - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect + golang.org/x/net v0.22.0 + golang.org/x/sys v0.18.0 // indirect + golang.org/x/text v0.14.0 // indirect ) diff --git a/go.sum b/go.sum index cbe305db..fa0e4ee6 100644 --- a/go.sum +++ b/go.sum @@ -13,6 +13,8 @@ github.com/bombsimon/logrusr/v3 v3.0.0 h1:tcAoLfuAhKP9npBxWzSdpsvKPQt1XV02nSf2lZ github.com/bombsimon/logrusr/v3 v3.0.0/go.mod h1:PksPPgSFEL2I52pla2glgCyyd2OqOHAnFF5E+g8Ixco= github.com/bool64/dev v0.2.32 h1:DRZtloaoH1Igky3zphaUHV9+SLIV2H3lsf78JsJHFg0= github.com/bool64/shared v0.1.5 h1:fp3eUhBsrSjNCQPcSdQqZxxh9bBwrYiZ+zOKFkM0/2E= +github.com/bufbuild/protocompile v0.10.0 h1:+jW/wnLMLxaCEG8AX9lD0bQ5v9h1RUiMKOBOT5ll9dM= +github.com/bufbuild/protocompile v0.10.0/go.mod h1:G9qQIQo0xZ6Uyj6CMNz0saGmx2so+KONo8/KrELABiY= github.com/cbroglie/mustache v1.3.0 h1:sj24GVYl8G7MH4b3zaROGsZnF8X79JqtjMx8/6H/nXM= github.com/cbroglie/mustache v1.3.0/go.mod h1:w58RIHjw/L7DPyRX2CcCTduNmcP1dvztaHP72ciSfh0= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -26,17 +28,17 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jhump/protoreflect v1.16.0 h1:54fZg+49widqXYQ0b+usAFHbMkBGR4PpXrsHc8+TBDg= +github.com/jhump/protoreflect v1.16.0/go.mod h1:oYPd7nPvcBw/5wlDfm/AVmU9zH9BgqGCI469pGxfj/8= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -59,7 +61,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/swaggest/assertjson v1.9.0 h1:dKu0BfJkIxv/xe//mkCrK5yZbs79jL7OVf9Ija7o2xQ= github.com/swaggest/jsonschema-go v0.3.64 h1:HyB41fkA4XP0BZkqWfGap5i2JtRHQGXG/21dGDPbyLM= github.com/swaggest/jsonschema-go v0.3.64/go.mod h1:DYuKqdpms/edvywsX6p1zHXCZkdwB28wRaBdFCe3Duw= @@ -80,27 +82,26 @@ go.opentelemetry.io/otel/sdk v1.11.2/go.mod h1:wZ1WxImwpq+lVRo4vsmSOxdd+xwoUJ6rq go.opentelemetry.io/otel/trace v1.11.2 h1:Xf7hWSF2Glv0DE3MH7fBHvtpSBsjcBUe5MYAmZM/+y0= go.opentelemetry.io/otel/trace v1.11.2/go.mod h1:4N+yC7QEz7TTsG9BSRLNAa63eg5E06ObSbKPmxQ/pKA= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f h1:BWUVssLB0HVOSY78gIdvk1dTVYtT1y8SBWtPYuTJ/6w= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 h1:AjyfHzEPEFp/NpvfN5g+KDla3EMojjhRVZc1i7cj+oM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/grpc v1.62.1 h1:B4n+nfKzOICUXMgyrNd19h/I9oH0L1pizfk1d4zSgTk= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/protobuf v1.33.1-0.20240408130810-98873a205002 h1:V7Da7qt0MkY3noVANIMVBk28nOnijADeOR3i5Hcvpj4= +google.golang.org/protobuf v1.33.1-0.20240408130810-98873a205002/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/provider/grpc/codesnip_client.go b/provider/grpc/codesnip_client.go new file mode 100644 index 00000000..34034277 --- /dev/null +++ b/provider/grpc/codesnip_client.go @@ -0,0 +1,36 @@ +package grpc + +import ( + "context" + + "github.com/konveyor/analyzer-lsp/engine" + pb "github.com/konveyor/analyzer-lsp/provider/internal/grpc" + "go.lsp.dev/uri" +) + +type codeSnipProviderClient struct { + client pb.ProviderCodeLocationServiceClient +} + +// GetCodeSnip implements engine.CodeSnip. +func (c *codeSnipProviderClient) GetCodeSnip(u uri.URI, loc engine.Location) (string, error) { + resp, err := c.client.GetCodeSnip(context.TODO(), &pb.GetCodeSnipRequest{ + Uri: string(u), + CodeLocation: &pb.Location{ + StartPosition: &pb.Position{ + Line: float64(loc.StartPosition.Line), + Character: float64(loc.StartPosition.Character), + }, + EndPosition: &pb.Position{ + Line: float64(loc.EndPosition.Line), + Character: float64(loc.EndPosition.Character), + }, + }, + }) + if err != nil { + return "", err + } + return resp.Snip, nil +} + +var _ engine.CodeSnip = &codeSnipProviderClient{} diff --git a/provider/grpc/dependency_resolver_client.go b/provider/grpc/dependency_resolver_client.go new file mode 100644 index 00000000..2b526fef --- /dev/null +++ b/provider/grpc/dependency_resolver_client.go @@ -0,0 +1,56 @@ +package grpc + +import ( + "context" + + "github.com/konveyor/analyzer-lsp/engine" + "github.com/konveyor/analyzer-lsp/output/v1/konveyor" + "github.com/konveyor/analyzer-lsp/provider" + pb "github.com/konveyor/analyzer-lsp/provider/internal/grpc" + "google.golang.org/protobuf/types/known/structpb" +) + +type dependencyLocationResolverClient struct { + client pb.ProviderDependencyLocationServiceClient +} + +// GetLocation implements provider.DependencyLocationResolver. +func (d *dependencyLocationResolverClient) GetLocation(ctx context.Context, dep konveyor.Dep, depFile string) (engine.Location, error) { + extras, err := structpb.NewStruct(dep.Extras) + if err != nil { + return engine.Location{}, err + } + + res, err := d.client.GetDependencyLocation(context.TODO(), &pb.GetDependencyLocationRequest{ + Dep: &pb.Dependency{ + Name: dep.Name, + Version: dep.Version, + Classifier: dep.Classifier, + Type: dep.Type, + ResolvedIdentifier: dep.ResolvedIdentifier, + FileURIPrefix: dep.FileURIPrefix, + Indirect: dep.Indirect, + Extras: extras, + Labels: dep.Labels, + }, + DepFile: depFile, + }) + if res.Location == nil { + return engine.Location{}, nil + } + loc := engine.Location{} + if res.Location.StartPosition != nil { + loc.StartPosition = engine.Position{} + loc.StartPosition.Line = int(res.Location.StartPosition.Line) + loc.StartPosition.Character = int(res.Location.StartPosition.Character) + } + if res.Location.EndPosition != nil { + loc.EndPosition = engine.Position{} + loc.EndPosition.Line = int(res.Location.EndPosition.Line) + loc.EndPosition.Character = int(res.Location.EndPosition.Character) + } + + return loc, nil +} + +var _ provider.DependencyLocationResolver = &dependencyLocationResolverClient{} diff --git a/provider/grpc/provider.go b/provider/grpc/provider.go index 30d6df86..ecd0c7dd 100644 --- a/provider/grpc/provider.go +++ b/provider/grpc/provider.go @@ -10,6 +10,7 @@ import ( "time" "github.com/go-logr/logr" + reflectClient "github.com/jhump/protoreflect/grpcreflect" "github.com/konveyor/analyzer-lsp/provider" pb "github.com/konveyor/analyzer-lsp/provider/internal/grpc" "github.com/phayes/freeport" @@ -31,16 +32,116 @@ type grpcProvider struct { } var _ provider.InternalProviderClient = &grpcProvider{} -var _ provider.Startable = &grpcProvider{} -func NewGRPCClient(config provider.Config, log logr.Logger) *grpcProvider { +func NewGRPCClient(config provider.Config, log logr.Logger) (provider.InternalProviderClient, error) { log = log.WithName(config.Name) log = log.WithValues("provider", "grpc") - return &grpcProvider{ - config: config, + conn, out, err := start(context.Background(), config) + if err != nil { + return nil, err + } + refCltCtx, cancel := context.WithCancel(context.Background()) + refClt := reflectClient.NewClientAuto(refCltCtx, conn) + defer cancel() + + services, err := checkServicesRunning(refClt, log) + if err != nil { + fmt.Printf("\n%v\n", err) + return nil, err + } + foundCodeSnip := false + foundDepResolve := false + for _, s := range services { + // TODO: Make consts + if s == "provider.ProviderCodeLocationService" { + foundCodeSnip = true + } + if s == "provider.ProviderDependencyLocationService" { + foundDepResolve = true + } + } + // Always need these + provierClient := pb.NewProviderServiceClient(conn) + gp := grpcProvider{ + Client: provierClient, log: log, + ctx: refCltCtx, + conn: conn, + config: config, serviceClients: []provider.ServiceClient{}, } + if out != nil { + go gp.LogProviderOut(context.Background(), out) + } + if foundCodeSnip && foundDepResolve { + // create the clients, create the struct that will have all the methods + + cspc := pb.NewProviderCodeLocationServiceClient(conn) + dlrc := pb.NewProviderDependencyLocationServiceClient(conn) + + return struct { + *grpcProvider + *codeSnipProviderClient + *dependencyLocationResolverClient + }{ + grpcProvider: &gp, + codeSnipProviderClient: &codeSnipProviderClient{ + client: cspc, + }, + dependencyLocationResolverClient: &dependencyLocationResolverClient{ + client: dlrc, + }, + }, nil + + } else if foundCodeSnip && !foundDepResolve { + // create the clients, create the struct that will have all the methods but dep resolve + cspc := pb.NewProviderCodeLocationServiceClient(conn) + + return struct { + *grpcProvider + *codeSnipProviderClient + }{ + grpcProvider: &gp, + codeSnipProviderClient: &codeSnipProviderClient{ + client: cspc, + }, + }, nil + } else if !foundCodeSnip && foundDepResolve { + + dlrc := pb.NewProviderDependencyLocationServiceClient(conn) + + return struct { + *grpcProvider + *dependencyLocationResolverClient + }{ + grpcProvider: &gp, + dependencyLocationResolverClient: &dependencyLocationResolverClient{ + client: dlrc, + }, + }, nil + + } else { + // just create grpcProvider + return &gp, nil + } +} + +func checkServicesRunning(refClt *reflectClient.Client, log logr.Logger) ([]string, error) { + for { + select { + default: + services, err := refClt.ListServices() + if err == nil && len(services) != 0 { + return services, nil + } + if err != nil { + log.Error(err, "error for list services retrying") + } + time.Sleep(3 * time.Second) + case <-time.After(time.Second * 30): + return nil, fmt.Errorf("no services found") + } + } } func (g *grpcProvider) ProviderInit(ctx context.Context) error { @@ -126,15 +227,15 @@ func (g *grpcProvider) Stop() { g.conn.Close() } -func (g *grpcProvider) Start(ctx context.Context) error { +func start(ctx context.Context, config provider.Config) (*grpc.ClientConn, io.ReadCloser, error) { // Here the Provider will start the GRPC Server if a binary is set. - if g.config.BinaryPath != "" { + if config.BinaryPath != "" { port, err := freeport.GetFreePort() if err != nil { - return err + return nil, nil, err } - ic := g.config.InitConfig + ic := config.InitConfig // For the generic external provider name := "generic" if len(ic) != 0 { @@ -143,55 +244,33 @@ func (g *grpcProvider) Start(ctx context.Context) error { } } - cmd := exec.CommandContext(ctx, g.config.BinaryPath, "--port", fmt.Sprintf("%v", port), "--name", name) + cmd := exec.CommandContext(ctx, config.BinaryPath, "--port", fmt.Sprintf("%v", port), "--name", name) // TODO: For each output line, log that line here, allows the server's to output to the main log file. Make sure we name this correctly // cmd will exit with the ending of the ctx. out, err := cmd.StdoutPipe() if err != nil { - return err + return nil, nil, err } - go g.LogProviderOut(ctx, out) err = cmd.Start() if err != nil { - return err + return nil, nil, err } conn, err := grpc.Dial(fmt.Sprintf("localhost:%v", port), grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { log.Fatalf("did not connect: %v", err) } - c := pb.NewProviderServiceClient(conn) - g.conn = conn - g.Client = c - - // Give the server some time to start up, assume that a server MUST provide 1 cap - for { - select { - default: - caps := g.Capabilities() - if len(caps) != 0 { - g.log.Info("Caps found", "caps", caps) - return nil - } - time.Sleep(3 * time.Second) - case <-time.After(time.Second * 30): - return fmt.Errorf("no Capabilities for provider: %v", g.config.Name) - } - } + return conn, out, nil } - if g.config.Address != "" { - conn, err := grpc.Dial(fmt.Sprintf(g.config.Address), grpc.WithTransportCredentials(insecure.NewCredentials())) + if config.Address != "" { + conn, err := grpc.Dial(fmt.Sprintf(config.Address), grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { log.Fatalf("did not connect: %v", err) } - c := pb.NewProviderServiceClient(conn) - g.conn = conn - g.Client = c - - return nil + return conn, nil, nil } - return fmt.Errorf("must set Address or Binary Path for a GRPC provider") + return nil, nil, fmt.Errorf("must set Address or Binary Path for a GRPC provider") } func (g *grpcProvider) LogProviderOut(ctx context.Context, out io.ReadCloser) { diff --git a/provider/internal/grpc/library.pb.go b/provider/internal/grpc/library.pb.go index ce090938..956ed039 100644 --- a/provider/internal/grpc/library.pb.go +++ b/provider/internal/grpc/library.pb.go @@ -872,21 +872,73 @@ func (x *GetCodeSnipRequest) GetCodeLocation() *Location { return nil } +type GetDependencyLocationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Dep *Dependency `protobuf:"bytes,1,opt,name=dep,proto3" json:"dep,omitempty"` + DepFile string `protobuf:"bytes,2,opt,name=DepFile,proto3" json:"DepFile,omitempty"` +} + +func (x *GetDependencyLocationRequest) Reset() { + *x = GetDependencyLocationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_internal_grpc_library_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetDependencyLocationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDependencyLocationRequest) ProtoMessage() {} + +func (x *GetDependencyLocationRequest) ProtoReflect() protoreflect.Message { + mi := &file_provider_internal_grpc_library_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetDependencyLocationRequest.ProtoReflect.Descriptor instead. +func (*GetDependencyLocationRequest) Descriptor() ([]byte, []int) { + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{14} +} + +func (x *GetDependencyLocationRequest) GetDep() *Dependency { + if x != nil { + return x.Dep + } + return nil +} + +func (x *GetDependencyLocationRequest) GetDepFile() string { + if x != nil { + return x.DepFile + } + return "" +} + type GetCodeSnipResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CodeSnip string `protobuf:"bytes,1,opt,name=codeSnip,proto3" json:"codeSnip,omitempty"` - Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` - Error string `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` - Successful bool `protobuf:"varint,4,opt,name=successful,proto3" json:"successful,omitempty"` + Snip string `protobuf:"bytes,1,opt,name=snip,proto3" json:"snip,omitempty"` } func (x *GetCodeSnipResponse) Reset() { *x = GetCodeSnipResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[14] + mi := &file_provider_internal_grpc_library_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -899,7 +951,7 @@ func (x *GetCodeSnipResponse) String() string { func (*GetCodeSnipResponse) ProtoMessage() {} func (x *GetCodeSnipResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[14] + mi := &file_provider_internal_grpc_library_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -912,35 +964,61 @@ func (x *GetCodeSnipResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCodeSnipResponse.ProtoReflect.Descriptor instead. func (*GetCodeSnipResponse) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{14} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{15} } -func (x *GetCodeSnipResponse) GetCodeSnip() string { +func (x *GetCodeSnipResponse) GetSnip() string { if x != nil { - return x.CodeSnip + return x.Snip } return "" } -func (x *GetCodeSnipResponse) GetUri() string { - if x != nil { - return x.Uri +type GetDependencyLocationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Location *Location `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` +} + +func (x *GetDependencyLocationResponse) Reset() { + *x = GetDependencyLocationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_provider_internal_grpc_library_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *GetCodeSnipResponse) GetError() string { - if x != nil { - return x.Error +func (x *GetDependencyLocationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetDependencyLocationResponse) ProtoMessage() {} + +func (x *GetDependencyLocationResponse) ProtoReflect() protoreflect.Message { + mi := &file_provider_internal_grpc_library_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return "" + return mi.MessageOf(x) +} + +// Deprecated: Use GetDependencyLocationResponse.ProtoReflect.Descriptor instead. +func (*GetDependencyLocationResponse) Descriptor() ([]byte, []int) { + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{16} } -func (x *GetCodeSnipResponse) GetSuccessful() bool { +func (x *GetDependencyLocationResponse) GetLocation() *Location { if x != nil { - return x.Successful + return x.Location } - return false + return nil } type Dependency struct { @@ -962,7 +1040,7 @@ type Dependency struct { func (x *Dependency) Reset() { *x = Dependency{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[15] + mi := &file_provider_internal_grpc_library_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -975,7 +1053,7 @@ func (x *Dependency) String() string { func (*Dependency) ProtoMessage() {} func (x *Dependency) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[15] + mi := &file_provider_internal_grpc_library_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -988,7 +1066,7 @@ func (x *Dependency) ProtoReflect() protoreflect.Message { // Deprecated: Use Dependency.ProtoReflect.Descriptor instead. func (*Dependency) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{15} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{17} } func (x *Dependency) GetName() string { @@ -1065,7 +1143,7 @@ type DependencyList struct { func (x *DependencyList) Reset() { *x = DependencyList{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[16] + mi := &file_provider_internal_grpc_library_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1078,7 +1156,7 @@ func (x *DependencyList) String() string { func (*DependencyList) ProtoMessage() {} func (x *DependencyList) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[16] + mi := &file_provider_internal_grpc_library_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1091,7 +1169,7 @@ func (x *DependencyList) ProtoReflect() protoreflect.Message { // Deprecated: Use DependencyList.ProtoReflect.Descriptor instead. func (*DependencyList) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{16} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{18} } func (x *DependencyList) GetDeps() []*Dependency { @@ -1114,7 +1192,7 @@ type DependencyResponse struct { func (x *DependencyResponse) Reset() { *x = DependencyResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[17] + mi := &file_provider_internal_grpc_library_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1127,7 +1205,7 @@ func (x *DependencyResponse) String() string { func (*DependencyResponse) ProtoMessage() {} func (x *DependencyResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[17] + mi := &file_provider_internal_grpc_library_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1140,7 +1218,7 @@ func (x *DependencyResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DependencyResponse.ProtoReflect.Descriptor instead. func (*DependencyResponse) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{17} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{19} } func (x *DependencyResponse) GetSuccessful() bool { @@ -1176,7 +1254,7 @@ type FileDep struct { func (x *FileDep) Reset() { *x = FileDep{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[18] + mi := &file_provider_internal_grpc_library_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1189,7 +1267,7 @@ func (x *FileDep) String() string { func (*FileDep) ProtoMessage() {} func (x *FileDep) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[18] + mi := &file_provider_internal_grpc_library_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1202,7 +1280,7 @@ func (x *FileDep) ProtoReflect() protoreflect.Message { // Deprecated: Use FileDep.ProtoReflect.Descriptor instead. func (*FileDep) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{18} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{20} } func (x *FileDep) GetFileURI() string { @@ -1231,7 +1309,7 @@ type DependencyDAGItem struct { func (x *DependencyDAGItem) Reset() { *x = DependencyDAGItem{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[19] + mi := &file_provider_internal_grpc_library_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1244,7 +1322,7 @@ func (x *DependencyDAGItem) String() string { func (*DependencyDAGItem) ProtoMessage() {} func (x *DependencyDAGItem) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[19] + mi := &file_provider_internal_grpc_library_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1257,7 +1335,7 @@ func (x *DependencyDAGItem) ProtoReflect() protoreflect.Message { // Deprecated: Use DependencyDAGItem.ProtoReflect.Descriptor instead. func (*DependencyDAGItem) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{19} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{21} } func (x *DependencyDAGItem) GetKey() *Dependency { @@ -1287,7 +1365,7 @@ type DependencyDAGResponse struct { func (x *DependencyDAGResponse) Reset() { *x = DependencyDAGResponse{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[20] + mi := &file_provider_internal_grpc_library_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1300,7 +1378,7 @@ func (x *DependencyDAGResponse) String() string { func (*DependencyDAGResponse) ProtoMessage() {} func (x *DependencyDAGResponse) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[20] + mi := &file_provider_internal_grpc_library_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1313,7 +1391,7 @@ func (x *DependencyDAGResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DependencyDAGResponse.ProtoReflect.Descriptor instead. func (*DependencyDAGResponse) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{20} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{22} } func (x *DependencyDAGResponse) GetSuccessful() bool { @@ -1349,7 +1427,7 @@ type FileDAGDep struct { func (x *FileDAGDep) Reset() { *x = FileDAGDep{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[21] + mi := &file_provider_internal_grpc_library_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1362,7 +1440,7 @@ func (x *FileDAGDep) String() string { func (*FileDAGDep) ProtoMessage() {} func (x *FileDAGDep) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[21] + mi := &file_provider_internal_grpc_library_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1375,7 +1453,7 @@ func (x *FileDAGDep) ProtoReflect() protoreflect.Message { // Deprecated: Use FileDAGDep.ProtoReflect.Descriptor instead. func (*FileDAGDep) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{21} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{23} } func (x *FileDAGDep) GetFileURI() string { @@ -1405,7 +1483,7 @@ type Proxy struct { func (x *Proxy) Reset() { *x = Proxy{} if protoimpl.UnsafeEnabled { - mi := &file_provider_internal_grpc_library_proto_msgTypes[22] + mi := &file_provider_internal_grpc_library_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1418,7 +1496,7 @@ func (x *Proxy) String() string { func (*Proxy) ProtoMessage() {} func (x *Proxy) ProtoReflect() protoreflect.Message { - mi := &file_provider_internal_grpc_library_proto_msgTypes[22] + mi := &file_provider_internal_grpc_library_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1431,7 +1509,7 @@ func (x *Proxy) ProtoReflect() protoreflect.Message { // Deprecated: Use Proxy.ProtoReflect.Descriptor instead. func (*Proxy) Descriptor() ([]byte, []int) { - return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{22} + return file_provider_internal_grpc_library_proto_rawDescGZIP(), []int{24} } func (x *Proxy) GetHTTPProxy() string { @@ -1572,113 +1650,130 @@ var file_provider_internal_grpc_library_proto_rawDesc = []byte{ 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x79, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, 0x70, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x53, - 0x6e, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x53, - 0x6e, 0x69, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22, 0xa9, 0x02, 0x0a, 0x0a, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x12, - 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, - 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x50, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x2f, - 0x0a, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x3a, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x65, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x04, 0x64, - 0x65, 0x70, 0x73, 0x22, 0x77, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, - 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x2b, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, - 0x44, 0x65, 0x70, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x22, 0x51, 0x0a, 0x07, - 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, - 0x52, 0x49, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, - 0x49, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, - 0x76, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x09, - 0x61, 0x64, 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x61, 0x64, - 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x44, - 0x61, 0x67, 0x44, 0x65, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x41, 0x47, 0x44, 0x65, - 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x67, 0x44, 0x65, 0x70, 0x22, 0x57, 0x0a, - 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x41, 0x47, 0x44, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x66, - 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, - 0x6c, 0x65, 0x55, 0x52, 0x49, 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x5f, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, - 0x1c, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x48, 0x54, 0x54, 0x50, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1e, 0x0a, - 0x0a, 0x48, 0x54, 0x54, 0x50, 0x53, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x53, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x18, 0x0a, - 0x07, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x32, 0xfe, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0c, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, 0x10, 0x2e, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, - 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x45, 0x76, 0x61, - 0x6c, 0x75, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x76, 0x61, 0x6c, - 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4c, - 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, 0x70, 0x12, 0x1c, 0x2e, - 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, - 0x53, 0x6e, 0x69, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, - 0x69, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x04, - 0x53, 0x74, 0x6f, 0x70, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x18, 0x2e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x44, 0x41, 0x47, 0x12, 0x18, 0x2e, 0x70, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x79, 0x6f, 0x72, 0x2f, - 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x2d, 0x6c, 0x73, 0x70, 0x2f, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x22, 0x60, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, + 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x26, 0x0a, 0x03, 0x64, 0x65, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, + 0x6e, 0x63, 0x79, 0x52, 0x03, 0x64, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x46, + 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x44, 0x65, 0x70, 0x46, 0x69, + 0x6c, 0x65, 0x22, 0x29, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6e, 0x69, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x6e, 0x69, 0x70, 0x22, 0x4f, 0x0a, + 0x1d, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, + 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa9, + 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, + 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x6e, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x65, 0x78, 0x74, 0x72, 0x61, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x22, 0x3a, 0x0a, 0x0e, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, + 0x64, 0x65, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, + 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x22, 0x77, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, + 0x65, 0x6e, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, + 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x22, + 0x51, 0x0a, 0x07, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, + 0x6c, 0x65, 0x55, 0x52, 0x49, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, + 0x65, 0x55, 0x52, 0x49, 0x12, 0x2c, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x04, 0x6c, 0x69, + 0x73, 0x74, 0x22, 0x76, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, + 0x44, 0x41, 0x47, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x39, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x09, 0x61, 0x64, 0x64, 0x65, 0x64, 0x44, 0x65, 0x70, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x15, 0x44, + 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, + 0x75, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x66, 0x75, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x0a, 0x66, 0x69, + 0x6c, 0x65, 0x44, 0x61, 0x67, 0x44, 0x65, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x41, + 0x47, 0x44, 0x65, 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x44, 0x61, 0x67, 0x44, 0x65, 0x70, + 0x22, 0x57, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x41, 0x47, 0x44, 0x65, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x65, 0x55, 0x52, 0x49, 0x12, 0x2f, 0x0a, 0x04, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x41, 0x47, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x04, 0x6c, 0x69, 0x73, 0x74, 0x22, 0x5f, 0x0a, 0x05, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x48, 0x54, 0x54, 0x50, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x48, 0x54, 0x54, 0x50, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x53, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x48, 0x54, 0x54, 0x50, 0x53, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x12, 0x18, 0x0a, 0x07, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x4e, 0x6f, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x32, 0x6b, 0x0a, 0x1b, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, 0x70, 0x12, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x53, 0x6e, 0x69, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x8f, 0x01, 0x0a, 0x21, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6a, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xb0, 0x03, 0x0a, 0x0f, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, + 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x2e, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x04, 0x49, 0x6e, 0x69, 0x74, 0x12, + 0x10, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x1a, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x49, 0x6e, 0x69, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x43, 0x0a, 0x08, 0x45, + 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x45, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x3a, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, + 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x44, 0x41, 0x47, 0x12, + 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x44, + 0x41, 0x47, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x34, 0x5a, 0x32, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x6f, 0x6e, 0x76, 0x65, + 0x79, 0x6f, 0x72, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x2d, 0x6c, 0x73, 0x70, + 0x2f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2f, 0x6c, 0x69, 0x62, 0x2f, 0x67, 0x72, + 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1693,75 +1788,81 @@ func file_provider_internal_grpc_library_proto_rawDescGZIP() []byte { return file_provider_internal_grpc_library_proto_rawDescData } -var file_provider_internal_grpc_library_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_provider_internal_grpc_library_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_provider_internal_grpc_library_proto_goTypes = []interface{}{ - (*Capability)(nil), // 0: provider.Capability - (*Config)(nil), // 1: provider.Config - (*InitResponse)(nil), // 2: provider.InitResponse - (*ExternalLink)(nil), // 3: provider.ExternalLink - (*Position)(nil), // 4: provider.Position - (*Location)(nil), // 5: provider.Location - (*IncidentContext)(nil), // 6: provider.IncidentContext - (*ProviderEvaluateResponse)(nil), // 7: provider.ProviderEvaluateResponse - (*BasicResponse)(nil), // 8: provider.BasicResponse - (*EvaluateRequest)(nil), // 9: provider.EvaluateRequest - (*EvaluateResponse)(nil), // 10: provider.EvaluateResponse - (*CapabilitiesResponse)(nil), // 11: provider.CapabilitiesResponse - (*ServiceRequest)(nil), // 12: provider.ServiceRequest - (*GetCodeSnipRequest)(nil), // 13: provider.GetCodeSnipRequest - (*GetCodeSnipResponse)(nil), // 14: provider.GetCodeSnipResponse - (*Dependency)(nil), // 15: provider.Dependency - (*DependencyList)(nil), // 16: provider.DependencyList - (*DependencyResponse)(nil), // 17: provider.DependencyResponse - (*FileDep)(nil), // 18: provider.FileDep - (*DependencyDAGItem)(nil), // 19: provider.DependencyDAGItem - (*DependencyDAGResponse)(nil), // 20: provider.DependencyDAGResponse - (*FileDAGDep)(nil), // 21: provider.FileDAGDep - (*Proxy)(nil), // 22: provider.Proxy - (*structpb.Struct)(nil), // 23: google.protobuf.Struct - (*emptypb.Empty)(nil), // 24: google.protobuf.Empty + (*Capability)(nil), // 0: provider.Capability + (*Config)(nil), // 1: provider.Config + (*InitResponse)(nil), // 2: provider.InitResponse + (*ExternalLink)(nil), // 3: provider.ExternalLink + (*Position)(nil), // 4: provider.Position + (*Location)(nil), // 5: provider.Location + (*IncidentContext)(nil), // 6: provider.IncidentContext + (*ProviderEvaluateResponse)(nil), // 7: provider.ProviderEvaluateResponse + (*BasicResponse)(nil), // 8: provider.BasicResponse + (*EvaluateRequest)(nil), // 9: provider.EvaluateRequest + (*EvaluateResponse)(nil), // 10: provider.EvaluateResponse + (*CapabilitiesResponse)(nil), // 11: provider.CapabilitiesResponse + (*ServiceRequest)(nil), // 12: provider.ServiceRequest + (*GetCodeSnipRequest)(nil), // 13: provider.GetCodeSnipRequest + (*GetDependencyLocationRequest)(nil), // 14: provider.GetDependencyLocationRequest + (*GetCodeSnipResponse)(nil), // 15: provider.GetCodeSnipResponse + (*GetDependencyLocationResponse)(nil), // 16: provider.GetDependencyLocationResponse + (*Dependency)(nil), // 17: provider.Dependency + (*DependencyList)(nil), // 18: provider.DependencyList + (*DependencyResponse)(nil), // 19: provider.DependencyResponse + (*FileDep)(nil), // 20: provider.FileDep + (*DependencyDAGItem)(nil), // 21: provider.DependencyDAGItem + (*DependencyDAGResponse)(nil), // 22: provider.DependencyDAGResponse + (*FileDAGDep)(nil), // 23: provider.FileDAGDep + (*Proxy)(nil), // 24: provider.Proxy + (*structpb.Struct)(nil), // 25: google.protobuf.Struct + (*emptypb.Empty)(nil), // 26: google.protobuf.Empty } var file_provider_internal_grpc_library_proto_depIdxs = []int32{ - 23, // 0: provider.Capability.templateContext:type_name -> google.protobuf.Struct - 23, // 1: provider.Config.providerSpecificConfig:type_name -> google.protobuf.Struct - 22, // 2: provider.Config.proxy:type_name -> provider.Proxy + 25, // 0: provider.Capability.templateContext:type_name -> google.protobuf.Struct + 25, // 1: provider.Config.providerSpecificConfig:type_name -> google.protobuf.Struct + 24, // 2: provider.Config.proxy:type_name -> provider.Proxy 4, // 3: provider.Location.startPosition:type_name -> provider.Position 4, // 4: provider.Location.endPosition:type_name -> provider.Position 5, // 5: provider.IncidentContext.codeLocation:type_name -> provider.Location - 23, // 6: provider.IncidentContext.variables:type_name -> google.protobuf.Struct + 25, // 6: provider.IncidentContext.variables:type_name -> google.protobuf.Struct 3, // 7: provider.IncidentContext.links:type_name -> provider.ExternalLink 6, // 8: provider.ProviderEvaluateResponse.incidentContexts:type_name -> provider.IncidentContext - 23, // 9: provider.ProviderEvaluateResponse.templateContext:type_name -> google.protobuf.Struct + 25, // 9: provider.ProviderEvaluateResponse.templateContext:type_name -> google.protobuf.Struct 7, // 10: provider.EvaluateResponse.response:type_name -> provider.ProviderEvaluateResponse 0, // 11: provider.CapabilitiesResponse.capabilities:type_name -> provider.Capability 5, // 12: provider.GetCodeSnipRequest.codeLocation:type_name -> provider.Location - 23, // 13: provider.Dependency.extras:type_name -> google.protobuf.Struct - 15, // 14: provider.DependencyList.deps:type_name -> provider.Dependency - 18, // 15: provider.DependencyResponse.fileDep:type_name -> provider.FileDep - 16, // 16: provider.FileDep.list:type_name -> provider.DependencyList - 15, // 17: provider.DependencyDAGItem.key:type_name -> provider.Dependency - 19, // 18: provider.DependencyDAGItem.addedDeps:type_name -> provider.DependencyDAGItem - 21, // 19: provider.DependencyDAGResponse.fileDagDep:type_name -> provider.FileDAGDep - 19, // 20: provider.FileDAGDep.list:type_name -> provider.DependencyDAGItem - 24, // 21: provider.ProviderService.Capabilities:input_type -> google.protobuf.Empty - 1, // 22: provider.ProviderService.Init:input_type -> provider.Config - 9, // 23: provider.ProviderService.Evaluate:input_type -> provider.EvaluateRequest - 13, // 24: provider.ProviderService.GetCodeSnip:input_type -> provider.GetCodeSnipRequest - 12, // 25: provider.ProviderService.Stop:input_type -> provider.ServiceRequest - 12, // 26: provider.ProviderService.GetDependencies:input_type -> provider.ServiceRequest - 12, // 27: provider.ProviderService.GetDependenciesDAG:input_type -> provider.ServiceRequest - 11, // 28: provider.ProviderService.Capabilities:output_type -> provider.CapabilitiesResponse - 2, // 29: provider.ProviderService.Init:output_type -> provider.InitResponse - 10, // 30: provider.ProviderService.Evaluate:output_type -> provider.EvaluateResponse - 14, // 31: provider.ProviderService.GetCodeSnip:output_type -> provider.GetCodeSnipResponse - 24, // 32: provider.ProviderService.Stop:output_type -> google.protobuf.Empty - 17, // 33: provider.ProviderService.GetDependencies:output_type -> provider.DependencyResponse - 20, // 34: provider.ProviderService.GetDependenciesDAG:output_type -> provider.DependencyDAGResponse - 28, // [28:35] is the sub-list for method output_type - 21, // [21:28] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 17, // 13: provider.GetDependencyLocationRequest.dep:type_name -> provider.Dependency + 5, // 14: provider.GetDependencyLocationResponse.location:type_name -> provider.Location + 25, // 15: provider.Dependency.extras:type_name -> google.protobuf.Struct + 17, // 16: provider.DependencyList.deps:type_name -> provider.Dependency + 20, // 17: provider.DependencyResponse.fileDep:type_name -> provider.FileDep + 18, // 18: provider.FileDep.list:type_name -> provider.DependencyList + 17, // 19: provider.DependencyDAGItem.key:type_name -> provider.Dependency + 21, // 20: provider.DependencyDAGItem.addedDeps:type_name -> provider.DependencyDAGItem + 23, // 21: provider.DependencyDAGResponse.fileDagDep:type_name -> provider.FileDAGDep + 21, // 22: provider.FileDAGDep.list:type_name -> provider.DependencyDAGItem + 13, // 23: provider.ProviderCodeLocationService.GetCodeSnip:input_type -> provider.GetCodeSnipRequest + 14, // 24: provider.ProviderDependencyLocationService.GetDependencyLocation:input_type -> provider.GetDependencyLocationRequest + 26, // 25: provider.ProviderService.Capabilities:input_type -> google.protobuf.Empty + 1, // 26: provider.ProviderService.Init:input_type -> provider.Config + 9, // 27: provider.ProviderService.Evaluate:input_type -> provider.EvaluateRequest + 12, // 28: provider.ProviderService.Stop:input_type -> provider.ServiceRequest + 12, // 29: provider.ProviderService.GetDependencies:input_type -> provider.ServiceRequest + 12, // 30: provider.ProviderService.GetDependenciesDAG:input_type -> provider.ServiceRequest + 15, // 31: provider.ProviderCodeLocationService.GetCodeSnip:output_type -> provider.GetCodeSnipResponse + 16, // 32: provider.ProviderDependencyLocationService.GetDependencyLocation:output_type -> provider.GetDependencyLocationResponse + 11, // 33: provider.ProviderService.Capabilities:output_type -> provider.CapabilitiesResponse + 2, // 34: provider.ProviderService.Init:output_type -> provider.InitResponse + 10, // 35: provider.ProviderService.Evaluate:output_type -> provider.EvaluateResponse + 26, // 36: provider.ProviderService.Stop:output_type -> google.protobuf.Empty + 19, // 37: provider.ProviderService.GetDependencies:output_type -> provider.DependencyResponse + 22, // 38: provider.ProviderService.GetDependenciesDAG:output_type -> provider.DependencyDAGResponse + 31, // [31:39] is the sub-list for method output_type + 23, // [23:31] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name } func init() { file_provider_internal_grpc_library_proto_init() } @@ -1939,7 +2040,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCodeSnipResponse); i { + switch v := v.(*GetDependencyLocationRequest); i { case 0: return &v.state case 1: @@ -1951,7 +2052,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Dependency); i { + switch v := v.(*GetCodeSnipResponse); i { case 0: return &v.state case 1: @@ -1963,7 +2064,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DependencyList); i { + switch v := v.(*GetDependencyLocationResponse); i { case 0: return &v.state case 1: @@ -1975,7 +2076,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DependencyResponse); i { + switch v := v.(*Dependency); i { case 0: return &v.state case 1: @@ -1987,7 +2088,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileDep); i { + switch v := v.(*DependencyList); i { case 0: return &v.state case 1: @@ -1999,7 +2100,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DependencyDAGItem); i { + switch v := v.(*DependencyResponse); i { case 0: return &v.state case 1: @@ -2011,7 +2112,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DependencyDAGResponse); i { + switch v := v.(*FileDep); i { case 0: return &v.state case 1: @@ -2023,7 +2124,7 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FileDAGDep); i { + switch v := v.(*DependencyDAGItem); i { case 0: return &v.state case 1: @@ -2035,6 +2136,30 @@ func file_provider_internal_grpc_library_proto_init() { } } file_provider_internal_grpc_library_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DependencyDAGResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_internal_grpc_library_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FileDAGDep); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_provider_internal_grpc_library_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Proxy); i { case 0: return &v.state @@ -2054,9 +2179,9 @@ func file_provider_internal_grpc_library_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_provider_internal_grpc_library_proto_rawDesc, NumEnums: 0, - NumMessages: 23, + NumMessages: 25, NumExtensions: 0, - NumServices: 1, + NumServices: 3, }, GoTypes: file_provider_internal_grpc_library_proto_goTypes, DependencyIndexes: file_provider_internal_grpc_library_proto_depIdxs, diff --git a/provider/internal/grpc/library.proto b/provider/internal/grpc/library.proto index 73da2c50..aae0efc6 100644 --- a/provider/internal/grpc/library.proto +++ b/provider/internal/grpc/library.proto @@ -92,18 +92,31 @@ message GetCodeSnipRequest{ Location codeLocation = 2; } +message GetDependencyLocationRequest{ + Dependency dep = 1; + string DepFile = 2; +} + message GetCodeSnipResponse{ - string codeSnip = 1; - string uri = 2; - string error = 3; - bool successful = 4; + string snip= 1; +} + +message GetDependencyLocationResponse{ + Location location= 1; +} + +service ProviderCodeLocationService { + rpc GetCodeSnip(GetCodeSnipRequest) returns (GetCodeSnipResponse) {}; +} + +service ProviderDependencyLocationService { + rpc GetDependencyLocation(GetDependencyLocationRequest) returns (GetDependencyLocationResponse) {}; } service ProviderService { rpc Capabilities (google.protobuf.Empty) returns (CapabilitiesResponse) {}; rpc Init (Config) returns (InitResponse) {}; rpc Evaluate (EvaluateRequest) returns (EvaluateResponse) {}; - rpc GetCodeSnip(GetCodeSnipRequest) returns (GetCodeSnipResponse) {}; rpc Stop (ServiceRequest) returns (google.protobuf.Empty) {}; rpc GetDependencies (ServiceRequest) returns (DependencyResponse) {}; rpc GetDependenciesDAG(ServiceRequest) returns (DependencyDAGResponse) {}; diff --git a/provider/internal/grpc/library_grpc.pb.go b/provider/internal/grpc/library_grpc.pb.go index 977970f0..937b30e5 100644 --- a/provider/internal/grpc/library_grpc.pb.go +++ b/provider/internal/grpc/library_grpc.pb.go @@ -19,11 +19,192 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 +const ( + ProviderCodeLocationService_GetCodeSnip_FullMethodName = "/provider.ProviderCodeLocationService/GetCodeSnip" +) + +// ProviderCodeLocationServiceClient is the client API for ProviderCodeLocationService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ProviderCodeLocationServiceClient interface { + GetCodeSnip(ctx context.Context, in *GetCodeSnipRequest, opts ...grpc.CallOption) (*GetCodeSnipResponse, error) +} + +type providerCodeLocationServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewProviderCodeLocationServiceClient(cc grpc.ClientConnInterface) ProviderCodeLocationServiceClient { + return &providerCodeLocationServiceClient{cc} +} + +func (c *providerCodeLocationServiceClient) GetCodeSnip(ctx context.Context, in *GetCodeSnipRequest, opts ...grpc.CallOption) (*GetCodeSnipResponse, error) { + out := new(GetCodeSnipResponse) + err := c.cc.Invoke(ctx, ProviderCodeLocationService_GetCodeSnip_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ProviderCodeLocationServiceServer is the server API for ProviderCodeLocationService service. +// All implementations must embed UnimplementedProviderCodeLocationServiceServer +// for forward compatibility +type ProviderCodeLocationServiceServer interface { + GetCodeSnip(context.Context, *GetCodeSnipRequest) (*GetCodeSnipResponse, error) + mustEmbedUnimplementedProviderCodeLocationServiceServer() +} + +// UnimplementedProviderCodeLocationServiceServer must be embedded to have forward compatible implementations. +type UnimplementedProviderCodeLocationServiceServer struct { +} + +func (UnimplementedProviderCodeLocationServiceServer) GetCodeSnip(context.Context, *GetCodeSnipRequest) (*GetCodeSnipResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetCodeSnip not implemented") +} +func (UnimplementedProviderCodeLocationServiceServer) mustEmbedUnimplementedProviderCodeLocationServiceServer() { +} + +// UnsafeProviderCodeLocationServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ProviderCodeLocationServiceServer will +// result in compilation errors. +type UnsafeProviderCodeLocationServiceServer interface { + mustEmbedUnimplementedProviderCodeLocationServiceServer() +} + +func RegisterProviderCodeLocationServiceServer(s grpc.ServiceRegistrar, srv ProviderCodeLocationServiceServer) { + s.RegisterService(&ProviderCodeLocationService_ServiceDesc, srv) +} + +func _ProviderCodeLocationService_GetCodeSnip_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetCodeSnipRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProviderCodeLocationServiceServer).GetCodeSnip(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ProviderCodeLocationService_GetCodeSnip_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProviderCodeLocationServiceServer).GetCodeSnip(ctx, req.(*GetCodeSnipRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ProviderCodeLocationService_ServiceDesc is the grpc.ServiceDesc for ProviderCodeLocationService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ProviderCodeLocationService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "provider.ProviderCodeLocationService", + HandlerType: (*ProviderCodeLocationServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetCodeSnip", + Handler: _ProviderCodeLocationService_GetCodeSnip_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "provider/internal/grpc/library.proto", +} + +const ( + ProviderDependencyLocationService_GetDependencyLocation_FullMethodName = "/provider.ProviderDependencyLocationService/GetDependencyLocation" +) + +// ProviderDependencyLocationServiceClient is the client API for ProviderDependencyLocationService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ProviderDependencyLocationServiceClient interface { + GetDependencyLocation(ctx context.Context, in *GetDependencyLocationRequest, opts ...grpc.CallOption) (*GetDependencyLocationResponse, error) +} + +type providerDependencyLocationServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewProviderDependencyLocationServiceClient(cc grpc.ClientConnInterface) ProviderDependencyLocationServiceClient { + return &providerDependencyLocationServiceClient{cc} +} + +func (c *providerDependencyLocationServiceClient) GetDependencyLocation(ctx context.Context, in *GetDependencyLocationRequest, opts ...grpc.CallOption) (*GetDependencyLocationResponse, error) { + out := new(GetDependencyLocationResponse) + err := c.cc.Invoke(ctx, ProviderDependencyLocationService_GetDependencyLocation_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ProviderDependencyLocationServiceServer is the server API for ProviderDependencyLocationService service. +// All implementations must embed UnimplementedProviderDependencyLocationServiceServer +// for forward compatibility +type ProviderDependencyLocationServiceServer interface { + GetDependencyLocation(context.Context, *GetDependencyLocationRequest) (*GetDependencyLocationResponse, error) + mustEmbedUnimplementedProviderDependencyLocationServiceServer() +} + +// UnimplementedProviderDependencyLocationServiceServer must be embedded to have forward compatible implementations. +type UnimplementedProviderDependencyLocationServiceServer struct { +} + +func (UnimplementedProviderDependencyLocationServiceServer) GetDependencyLocation(context.Context, *GetDependencyLocationRequest) (*GetDependencyLocationResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetDependencyLocation not implemented") +} +func (UnimplementedProviderDependencyLocationServiceServer) mustEmbedUnimplementedProviderDependencyLocationServiceServer() { +} + +// UnsafeProviderDependencyLocationServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ProviderDependencyLocationServiceServer will +// result in compilation errors. +type UnsafeProviderDependencyLocationServiceServer interface { + mustEmbedUnimplementedProviderDependencyLocationServiceServer() +} + +func RegisterProviderDependencyLocationServiceServer(s grpc.ServiceRegistrar, srv ProviderDependencyLocationServiceServer) { + s.RegisterService(&ProviderDependencyLocationService_ServiceDesc, srv) +} + +func _ProviderDependencyLocationService_GetDependencyLocation_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetDependencyLocationRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ProviderDependencyLocationServiceServer).GetDependencyLocation(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ProviderDependencyLocationService_GetDependencyLocation_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ProviderDependencyLocationServiceServer).GetDependencyLocation(ctx, req.(*GetDependencyLocationRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ProviderDependencyLocationService_ServiceDesc is the grpc.ServiceDesc for ProviderDependencyLocationService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ProviderDependencyLocationService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "provider.ProviderDependencyLocationService", + HandlerType: (*ProviderDependencyLocationServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetDependencyLocation", + Handler: _ProviderDependencyLocationService_GetDependencyLocation_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "provider/internal/grpc/library.proto", +} + const ( ProviderService_Capabilities_FullMethodName = "/provider.ProviderService/Capabilities" ProviderService_Init_FullMethodName = "/provider.ProviderService/Init" ProviderService_Evaluate_FullMethodName = "/provider.ProviderService/Evaluate" - ProviderService_GetCodeSnip_FullMethodName = "/provider.ProviderService/GetCodeSnip" ProviderService_Stop_FullMethodName = "/provider.ProviderService/Stop" ProviderService_GetDependencies_FullMethodName = "/provider.ProviderService/GetDependencies" ProviderService_GetDependenciesDAG_FullMethodName = "/provider.ProviderService/GetDependenciesDAG" @@ -36,7 +217,6 @@ type ProviderServiceClient interface { Capabilities(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*CapabilitiesResponse, error) Init(ctx context.Context, in *Config, opts ...grpc.CallOption) (*InitResponse, error) Evaluate(ctx context.Context, in *EvaluateRequest, opts ...grpc.CallOption) (*EvaluateResponse, error) - GetCodeSnip(ctx context.Context, in *GetCodeSnipRequest, opts ...grpc.CallOption) (*GetCodeSnipResponse, error) Stop(ctx context.Context, in *ServiceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) GetDependencies(ctx context.Context, in *ServiceRequest, opts ...grpc.CallOption) (*DependencyResponse, error) GetDependenciesDAG(ctx context.Context, in *ServiceRequest, opts ...grpc.CallOption) (*DependencyDAGResponse, error) @@ -77,15 +257,6 @@ func (c *providerServiceClient) Evaluate(ctx context.Context, in *EvaluateReques return out, nil } -func (c *providerServiceClient) GetCodeSnip(ctx context.Context, in *GetCodeSnipRequest, opts ...grpc.CallOption) (*GetCodeSnipResponse, error) { - out := new(GetCodeSnipResponse) - err := c.cc.Invoke(ctx, ProviderService_GetCodeSnip_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *providerServiceClient) Stop(ctx context.Context, in *ServiceRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { out := new(emptypb.Empty) err := c.cc.Invoke(ctx, ProviderService_Stop_FullMethodName, in, out, opts...) @@ -120,7 +291,6 @@ type ProviderServiceServer interface { Capabilities(context.Context, *emptypb.Empty) (*CapabilitiesResponse, error) Init(context.Context, *Config) (*InitResponse, error) Evaluate(context.Context, *EvaluateRequest) (*EvaluateResponse, error) - GetCodeSnip(context.Context, *GetCodeSnipRequest) (*GetCodeSnipResponse, error) Stop(context.Context, *ServiceRequest) (*emptypb.Empty, error) GetDependencies(context.Context, *ServiceRequest) (*DependencyResponse, error) GetDependenciesDAG(context.Context, *ServiceRequest) (*DependencyDAGResponse, error) @@ -140,9 +310,6 @@ func (UnimplementedProviderServiceServer) Init(context.Context, *Config) (*InitR func (UnimplementedProviderServiceServer) Evaluate(context.Context, *EvaluateRequest) (*EvaluateResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Evaluate not implemented") } -func (UnimplementedProviderServiceServer) GetCodeSnip(context.Context, *GetCodeSnipRequest) (*GetCodeSnipResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetCodeSnip not implemented") -} func (UnimplementedProviderServiceServer) Stop(context.Context, *ServiceRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") } @@ -219,24 +386,6 @@ func _ProviderService_Evaluate_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } -func _ProviderService_GetCodeSnip_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetCodeSnipRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ProviderServiceServer).GetCodeSnip(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ProviderService_GetCodeSnip_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ProviderServiceServer).GetCodeSnip(ctx, req.(*GetCodeSnipRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _ProviderService_Stop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ServiceRequest) if err := dec(in); err != nil { @@ -310,10 +459,6 @@ var ProviderService_ServiceDesc = grpc.ServiceDesc{ MethodName: "Evaluate", Handler: _ProviderService_Evaluate_Handler, }, - { - MethodName: "GetCodeSnip", - Handler: _ProviderService_GetCodeSnip_Handler, - }, { MethodName: "Stop", Handler: _ProviderService_Stop_Handler, diff --git a/provider/lib/lib.go b/provider/lib/lib.go index 6bf84399..b4df3af5 100644 --- a/provider/lib/lib.go +++ b/provider/lib/lib.go @@ -13,6 +13,6 @@ func GetProviderClient(config provider.Config, log logr.Logger) (provider.Intern case "builtin": return builtin.NewBuiltinProvider(config, log), nil default: - return grpc.NewGRPCClient(config, log), nil + return grpc.NewGRPCClient(config, log) } } diff --git a/provider/provider.go b/provider/provider.go index ca3ba679..cb855d20 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -432,7 +432,7 @@ type ServiceClient interface { } type DependencyLocationResolver interface { - GetLocation(ctx context.Context, dep konveyor.Dep) (engine.Location, error) + GetLocation(ctx context.Context, dep konveyor.Dep, depFile string) (engine.Location, error) } type Dep = konveyor.Dep @@ -681,7 +681,7 @@ func (dc DependencyCondition) Evaluate(ctx context.Context, log logr.Logger, con if depLocationResolver != nil { // this is a best-effort step and we don't want to block if resolver misbehaves timeoutContext, cancelFunc := context.WithTimeout(ctx, time.Second*3) - location, err := depLocationResolver.GetLocation(timeoutContext, *matchedDep.dep) + location, err := depLocationResolver.GetLocation(timeoutContext, *matchedDep.dep, string(matchedDep.uri)) if err == nil { incident.LineNumber = &location.StartPosition.Line incident.CodeLocation = &location @@ -754,7 +754,7 @@ func (dc DependencyCondition) Evaluate(ctx context.Context, log logr.Logger, con log.V(7).Error(err, "failed to unmarshal dependency", "dep", matchedDep.dep.Name) } // Use "parent" baseDep location lookup for indirect dependencies - location, err := depLocationResolver.GetLocation(timeoutContext, konvDep) + location, err := depLocationResolver.GetLocation(timeoutContext, konvDep, string(matchedDep.uri)) if err == nil { incident.LineNumber = &location.StartPosition.Line incident.CodeLocation = &location @@ -762,7 +762,7 @@ func (dc DependencyCondition) Evaluate(ctx context.Context, log logr.Logger, con log.V(7).Error(err, "failed to get location for indirect dependency", "dep", matchedDep.dep.Name) } } else { - location, err := depLocationResolver.GetLocation(timeoutContext, *matchedDep.dep) + location, err := depLocationResolver.GetLocation(timeoutContext, *matchedDep.dep, string(matchedDep.uri)) if err == nil { incident.LineNumber = &location.StartPosition.Line incident.CodeLocation = &location diff --git a/provider/server.go b/provider/server.go index c35c4926..8ac8a7ef 100644 --- a/provider/server.go +++ b/provider/server.go @@ -10,7 +10,10 @@ import ( "time" "github.com/go-logr/logr" + "github.com/konveyor/analyzer-lsp/engine" + "github.com/konveyor/analyzer-lsp/output/v1/konveyor" libgrpc "github.com/konveyor/analyzer-lsp/provider/internal/grpc" + "go.lsp.dev/uri" "google.golang.org/grpc" "google.golang.org/grpc/reflection" "google.golang.org/protobuf/types/known/emptypb" @@ -23,14 +26,18 @@ type Server interface { } type server struct { - Client BaseClient - Log logr.Logger - Port int - libgrpc.UnimplementedProviderServiceServer + Client BaseClient + CodeSnipeResolver engine.CodeSnip + DepLocationResolver DependencyLocationResolver + Log logr.Logger + Port int mutex sync.RWMutex clients map[int64]clientMapItem rand rand.Rand + libgrpc.UnimplementedProviderCodeLocationServiceServer + libgrpc.UnimplementedProviderDependencyLocationServiceServer + libgrpc.UnimplementedProviderServiceServer } type clientMapItem struct { @@ -42,6 +49,20 @@ type clientMapItem struct { // TOOD: HANDLE INIT CONFIG CHANGES func NewServer(client BaseClient, port int, logger logr.Logger) Server { s := rand.NewSource(time.Now().Unix()) + + var depLocationResolver DependencyLocationResolver + var codeSnip engine.CodeSnip + var ok bool + depLocationResolver, ok = client.(DependencyLocationResolver) + if !ok { + depLocationResolver = nil + } + + codeSnip, ok = client.(engine.CodeSnip) + if !ok { + codeSnip = nil + } + return &server{ Client: client, Port: port, @@ -50,6 +71,8 @@ func NewServer(client BaseClient, port int, logger logr.Logger) Server { mutex: sync.RWMutex{}, clients: make(map[int64]clientMapItem), rand: *rand.New(s), + DepLocationResolver: depLocationResolver, + CodeSnipeResolver: codeSnip, } } @@ -60,6 +83,12 @@ func (s *server) Start(ctx context.Context) error { return err } gs := grpc.NewServer() + if s.DepLocationResolver != nil { + libgrpc.RegisterProviderDependencyLocationServiceServer(gs, s) + } + if s.CodeSnipeResolver != nil { + libgrpc.RegisterProviderCodeLocationServiceServer(gs, s) + } libgrpc.RegisterProviderServiceServer(gs, s) reflection.Register(gs) log.Printf("server listening at %v", lis.Addr()) @@ -69,6 +98,70 @@ func (s *server) Start(ctx context.Context) error { return nil } +func (s *server) GetDependencyLocation(ctx context.Context, req *libgrpc.GetDependencyLocationRequest) (*libgrpc.GetDependencyLocationResponse, error) { + if s.DepLocationResolver == nil { + return nil, fmt.Errorf("Provider does not provide Dependency Location Resolution") + } + res, err := s.DepLocationResolver.GetLocation(ctx, konveyor.Dep{ + Name: req.Dep.Name, + Version: req.Dep.Version, + Classifier: req.Dep.Classifier, + Type: req.Dep.Type, + Indirect: req.Dep.Indirect, + ResolvedIdentifier: req.Dep.ResolvedIdentifier, + Extras: req.Dep.Extras.AsMap(), + Labels: req.Dep.Labels, + FileURIPrefix: req.Dep.FileURIPrefix, + }, req.DepFile) + if err != nil { + return nil, err + } + + return &libgrpc.GetDependencyLocationResponse{ + Location: &libgrpc.Location{ + StartPosition: &libgrpc.Position{ + Line: float64(res.StartPosition.Line), + Character: float64(res.StartPosition.Character), + }, + EndPosition: &libgrpc.Position{ + Line: float64(res.EndPosition.Line), + Character: float64(res.EndPosition.Character), + }, + }, + }, nil +} + +func (s *server) GetCodeSnip(ctx context.Context, req *libgrpc.GetCodeSnipRequest) (*libgrpc.GetCodeSnipResponse, error) { + if s.CodeSnipeResolver == nil { + return nil, fmt.Errorf("Provider does not provide Code Snippet Resolution") + } + if req.CodeLocation == nil { + return nil, nil + + } + loc := engine.Location{} + if req.CodeLocation.StartPosition != nil { + loc.StartPosition = engine.Position{ + Line: int(req.CodeLocation.StartPosition.Line), + Character: int(req.CodeLocation.StartPosition.Character), + } + } + if req.CodeLocation.EndPosition != nil { + loc.EndPosition = engine.Position{ + Line: int(req.CodeLocation.EndPosition.Line), + Character: int(req.CodeLocation.EndPosition.Character), + } + } + + res, err := s.CodeSnipeResolver.GetCodeSnip(uri.URI(req.Uri), loc) + if err != nil { + return nil, err + } + return &libgrpc.GetCodeSnipResponse{ + Snip: res, + }, nil +} + func (s *server) Capabilities(ctx context.Context, _ *emptypb.Empty) (*libgrpc.CapabilitiesResponse, error) { caps := s.Client.Capabilities() @@ -270,7 +363,6 @@ func (s *server) GetDependencies(ctx context.Context, in *libgrpc.ServiceRequest Successful: true, FileDep: fileDeps, }, nil - } func recreateDAGAddedItems(items []DepDAGItem) []*libgrpc.DependencyDAGItem { diff --git a/provider_container_settings.json b/provider_container_settings.json index 377a72bb..25599497 100644 --- a/provider_container_settings.json +++ b/provider_container_settings.json @@ -21,7 +21,7 @@ "name": "yaml", "binaryPath": "/usr/local/bin/yq-external-provider", "initConfig": [{ - "location": "examples/yaml", + "location": "/analyzer-lsp/examples/yaml", "analysisMode": "full", "providerSpecificConfig": { "name": "yq", @@ -70,7 +70,7 @@ "binaryPath": "/usr/local/bin/java-external-provider", "initConfig": [ { - "location": "examples/java", + "location": "/analyzer-lsp/examples/java", "providerSpecificConfig": { "lspServerName": "java", "bundles": "/jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar", @@ -80,7 +80,7 @@ "analysisMode": "source-only" }, { - "location": "examples/customers-tomcat-legacy", + "location": "/analyzer-lsp/examples/customers-tomcat-legacy", "providerSpecificConfig": { "lspServerName": "java", "lspServerPath": "/jdtls/bin/jdtls", diff --git a/provider_local_external_images.json b/provider_local_external_images.json new file mode 100644 index 00000000..55f55757 --- /dev/null +++ b/provider_local_external_images.json @@ -0,0 +1,103 @@ +[ + { + "name": "go", + "address": "localhost:14653", + "initConfig": [{ + "analysisMode": "full", + "providerSpecificConfig": { + "lspServerName": "generic", + "lspServerPath": "/root/go/bin/gopls", + "lspServerArgs": [], + "lspServerInitializationOptions": "", + + "workspaceFolders": ["file:///examples/golang"], + "dependencyFolders": [], + + "dependencyProviderPath": "/usr/local/bin/golang-dependency-provider" + } + }] + }, + { + "name": "yaml", + "address": "localhost:14652", + "initConfig": [{ + "location": "examples/yaml", + "analysisMode": "full", + "providerSpecificConfig": { + "name": "yq", + "lspServerPath": "/usr/local/bin/yq" + } + }] + }, + { + "name": "python", + "address": "localhost:14655", + "initConfig": [{ + "analysisMode": "full", + "providerSpecificConfig": { + "lspServerName": "pylsp", + "lspServerPath": "/usr/local/bin/pylsp", + "lspServerArgs": [], + "lspServerInitializationOptions": "", + + "workspaceFolders": ["file:///examples/python"], + "dependencyFolders": ["examples/python/__pycache__", "examples/python/.venv"], + + "dependencyProviderPath": "" + } + }] + }, + { + "name": "nodejs", + "address": "localhost:14654", + "initConfig": [{ + "analysisMode": "full", + "providerSpecificConfig": { + "lspServerName": "nodejs", + "lspServerPath": "/usr/local/bin/typescript-language-server", + "lspServerArgs": ["--stdio"], + "lspServerInitializationOptions": "", + + "workspaceFolders": ["file:///examples/nodejs"], + "dependencyFolders": [""], + + "dependencyProviderPath": "" + } + }] + }, + { + "name": "java", + "address": "localhost:14651", + "initConfig": [ + { + "location": "examples/java", + "providerSpecificConfig": { + "lspServerName": "java", + "bundles": "/jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar", + "depOpenSourceLabelsFile": "/usr/local/etc/maven.default.index", + "lspServerPath": "/jdtls/bin/jdtls" + }, + "analysisMode": "source-only" + }, + { + "location": "examples/customers-tomcat-legacy", + "providerSpecificConfig": { + "lspServerName": "java", + "lspServerPath": "/jdtls/bin/jdtls", + "depOpenSourceLabelsFile": "/usr/local/etc/maven.default.index", + "bundles": "/jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar" + }, + "analysisMode": "source-only" + } + ] + }, + { + "name": "builtin", + "initConfig": [ + {"location": "external-providers/java-external-provider/examples/java"}, + {"location": "external-providers/java-external-provider/examples/customers-tomcat-legacy"}, + {"location": "examples/python/"}, + {"location": "examples/golang/"} + ] + } +] diff --git a/provider_pod_local_settings.json b/provider_pod_local_settings.json new file mode 100644 index 00000000..6f83f1a6 --- /dev/null +++ b/provider_pod_local_settings.json @@ -0,0 +1,103 @@ +[ + { + "name": "go", + "address": "localhost:14653", + "initConfig": [{ + "analysisMode": "full", + "providerSpecificConfig": { + "lspServerName": "generic", + "lspServerPath": "/root/go/bin/gopls", + "lspServerArgs": [], + "lspServerInitializationOptions": "", + + "workspaceFolders": ["file:///analyzer-lsp/examples/golang"], + "dependencyFolders": [], + + "dependencyProviderPath": "/usr/local/bin/golang-dependency-provider" + } + }] + }, + { + "name": "yaml", + "address": "localhost:14652", + "initConfig": [{ + "location": "/analyzer-lsp/examples/yaml", + "analysisMode": "full", + "providerSpecificConfig": { + "name": "yq", + "lspServerPath": "/usr/local/bin/yq" + } + }] + }, + { + "name": "python", + "address": "localhost:14655", + "initConfig": [{ + "analysisMode": "full", + "providerSpecificConfig": { + "lspServerName": "pylsp", + "lspServerPath": "/usr/local/bin/pylsp", + "lspServerArgs": [], + "lspServerInitializationOptions": "", + + "workspaceFolders": ["file:///analyzer-lsp/examples/python"], + "dependencyFolders": ["examples/python/__pycache__", "examples/python/.venv"], + + "dependencyProviderPath": "" + } + }] + }, + { + "name": "nodejs", + "address": "localhost:14654", + "initConfig": [{ + "analysisMode": "full", + "providerSpecificConfig": { + "lspServerName": "nodejs", + "lspServerPath": "/usr/local/bin/typescript-language-server", + "lspServerArgs": ["--stdio"], + "lspServerInitializationOptions": "", + + "workspaceFolders": ["file:///analyzer-lsp/examples/nodejs"], + "dependencyFolders": [""], + + "dependencyProviderPath": "" + } + }] + }, + { + "name": "java", + "address": "localhost:14651", + "initConfig": [ + { + "location": "/analyzer-lsp/examples/java", + "providerSpecificConfig": { + "lspServerName": "java", + "bundles": "/jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar", + "depOpenSourceLabelsFile": "/usr/local/etc/maven.default.index", + "lspServerPath": "/jdtls/bin/jdtls" + }, + "analysisMode": "source-only" + }, + { + "location": "/analyzer-lsp/examples/customers-tomcat-legacy", + "providerSpecificConfig": { + "lspServerName": "java", + "lspServerPath": "/jdtls/bin/jdtls", + "depOpenSourceLabelsFile": "/usr/local/etc/maven.default.index", + "bundles": "/jdtls/java-analyzer-bundle/java-analyzer-bundle.core/target/java-analyzer-bundle.core-1.0.0-SNAPSHOT.jar" + }, + "analysisMode": "source-only" + } + ] + }, + { + "name": "builtin", + "initConfig": [ + {"location": "examples/java/"}, + {"location": "examples/python/"}, + {"location": "examples/golang/"}, + {"location": "examples/customers-tomcat-legacy/"} + ] + } +]