* Revert using a DEVFILE_PROXY env var
There is no proxy deployed in the internal test cluster.
As such, this env var no longer makes sense.
* To help troubleshoot, display the resolved Devfile registry URL
* Make interactive tests more resilient with stack versions
They are now able to determine if the "Select version" prompt
should be asked by "odo init" or not:
* Make sure doc automation tests do not rely on hard-coded namespaces
* Allow to run doc automation tests with more parallel Ginkgo nodes
This is possible now that those tests no longer
depend on a single hard-coded namespace.
* Remove occurrences of the DEVFILE_REGISTRY env var in IBM Pipelines scripts
* Reuse logic for determining the Devfile Registry URL in "odo registry" tests
* Clarify what openshiftci-config.sh is used for
* Display Git commit ID in output of odo commands where the version is displayed
This covers:
- odo init
- odo dev
- odo deploy
Displaying the commit ID (same as in `odo version`) will help quickly pinpoint the exact commit without having to run `odo version`.
See #6131 for more context
* Append the state of the working tree next to the Git commit ID
`git describe` is much more helpful to quickly understand the state of the working tree.
For backward compatibility, we are defaulting to `git rev-parse`,
just in case `git describe` does not work correctly.
* Fix integration tests
* Fix doc automation tests
Strip the Git commit ID from the full odo version string
prior to comparing the outputs.
We still want to compare the tag displayed.
* Generate static UI files from within a container, for more predictability
For some reason, Angular was not generating the same hash
for the `runtime*.js` file (even with the same content),
causing the 'check-ui-static-files' job to sometimes fail.
Leveraging a container (as we are already doing for the
'generate-apiserver' and 'generate-apifront' tasks)
should allow for more predictable output.
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Generate static UI
---------
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Serve UI from api server
* Build UI static files + check generation with GHAction
* Update UI static files
* Use specific commit for verify-changed-files action
* Add pkg/apiserver-impl/ui to .gitattributes
* Ignore pkg/apiserver-impl/ui/** for sonar
* POST /devstate/container
* Implement POST /devstate/container
* Generate DELETE /devstate/container/{containerName}
* Implement DELETE /devstate/container/{containerName}
* Serve /devstate/image
* Implement /devstate/image
* Serve /devstate/resource
* Implement /devstate/resource
* Move Components specific code to components.go
* Serve /devstate/*command
* Implement /devstate/*command
* Serve /devstate/metadata
* Implement /devstate/metadata
* Serve devstate/chart
* Implement /devstate/chart
* Create a DevfileContent schema reference
* Use `DELETE /command/{name}` instead of `DELETE /*Command/{name}`
* Serve /devstate/command/move
* Implement /devstate/command/move
* Serve /devstate/command/{name}/[un]setDefault
* Implement /devstate/command/{name}/[un]setDefault
* serve /devstate/events
* Implement /devstate/events
* Serve /devstate/quantityValid
* Implement /devstate/quantityValid
* Add json tag to API result value
* Sets a proxy for the API
* Move calls from wasm to api (first part)
* Implement PUT /devsatte/devfile
* Move calls from wasm to api (end)
* Implement GET /devstate/devfile
* Implement DELETE /devstate/devfile
* At startup, get devfile from api, not from localStorage
* Rename service wasmGo -> devstate
* Remove wasm module
* Update to latest devfile-lifecycle version, license compatible
* Apply suggestions from code review
Co-authored-by: Armel Soro <armel@rm3l.org>
* Remove wasm from ui/{Makefile/devfile.yaml}
* Define DevfileContent into apispec
* Define required fields
* Generate API models from front
* Regenerate API server after spec changes
* Fix examples case
* Fix github action e2e tests not running
* Make target for all generated api code
---------
Co-authored-by: Armel Soro <armel@rm3l.org>
* Implement HTTP Server based on OpenAPI spec
Signed-off-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Armel Soro <asoro@redhat.com>
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Starter server when odo dev starts
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Add --api-server and --api-server-port flags to start API Server; write the port to stat file; TODO: make this feature experimental
Signed-off-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Armel Soro <asoro@redhat.com>
Co-authored-by: Philippe Martin <phmartin@redhat.com>
Signed-off-by: Parthvi Vala <pvala@redhat.com>
Make the flag experimental
Signed-off-by: Parthvi Vala <pvala@redhat.com>
Make apiserver and apiserverport flag local
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Use container image to run openapi-generator-tool instead of a local CLI
Co-authored-by: Armel Soro <asoro@redhat.com>
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Add integration test
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Use label podman
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Regenerate the api files with openapitool v6.6.0 and changes from review
Signed-off-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Armel Soro <asoro@redhat.com>
---------
Signed-off-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Armel Soro <asoro@redhat.com>
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Replace deprecated '--slow-spec-threshold' Ginkgo flag with '--poll-progress-after'
Per [1], this instructs Ginkgo to automatically emit a progress report
whenever a node takes too long to complete.
The Progress Report includes information about which node is currently running
and the exact line of code that it is currently executing,
along with any relevant goroutines that were launched by the spec.
[1] https://onsi.github.io/ginkgo/#getting-visibility-into-long-running-specs
* Also set '--poll-progress-interval' flag so as to get progress reports periodically
* Stop containers after tests
* Use --output-interceptor-mode=none flag to not wait containers stopped
* Run podman pod inspect after tests
* Dedicated step for listing/stopping containers
* Rename SetProjectName into GetProjectName
Co-authored-by: Anand Singh <ansingh@redhat.com>
Co-authored-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Generate specific containers.conf file for each test spec using a dedicated engine namespace
Co-authored-by: Anand Singh <ansingh@redhat.com>
Co-authored-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Listen on random ports on Podman when '--random-ports' is used
This reduces the risks of port conflicts when running test specs in parallel.
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Exclude Gosec G404 (use of math/rand) rule
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Run Podman specs in parallel
* Output the Pod spec to be played by Podman depending on verbosity level
This will help debug potential issues.
* Use random name in 'using devfile that contains K8s resource to run it on podman' test
* Use random component name in sample java-quarkus project used in 'a hotReload capable project is used with odo dev' test
* Revert "Run Podman specs in parallel"
Parallelization works great on GitHub Actions, but I experimented a lot
of issues when running locally with a lot (~11) of parallel test nodes.
Not sure why exactly, but some containers created by Podman had a lot of
networking issues.
We can look into parallelizing the runs later in a subsequent PR.
This reverts commit 64d5d31248a62f355a32ca245ba399a723fdb22f.
* Allow overridding the number of parallel nodes for Podman integration tests
This way, we could be able to run them in parallel on GitHub
but sequentially (default) locally.
This will still benefit us by reducing the time it takes to run such tests on GitHub.
Meanwhile, we can look into the issues we have locally with parallelization.
Note that it is still possible to run them locally in parallel via
the PODMAN_EXEC_NODE env var.
Co-authored-by: Anand Singh <ansingh@redhat.com>
Co-authored-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Philippe Martin <phmartin@redhat.com>
* Pilot work
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Add more tests
* CompareDocOutput returns strings missing from cmdout and file
* Finish automating docs for odo init command reference
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Cleanup
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Add make target for doc automation tests; create a separate folder for doc automation tests; add documentation for helper functions
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Attempt at fixing validation test
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Fix validation failures
* Rename ReplaceTimeInString to ReplaceAllTimeInString
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Replace all time strings with a static value for both cmd and mdx output
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Add test suite for command reference tests
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Fix failing test and skip empty directory interactive test; add comment
for tests with specific check
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Fix make target
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* StripSpinner relies on statement to decide if it should strip the line or let it be
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Add check for unicode spinner frames just in case it is present; it is flaky
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Make interactive tests work
* Make it pretty
* Update odo version
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Test with OpenShift cluster non authenticated
* Add analyze commands
* Add same tests as with NoCluster
* Do not try to cleanup namespaces
* Assert non authenticated
* Change Makefile target name
* Update odo to use go 1.18
Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
* Update golangci-lint version in Makefile
Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
* Use go 1.18, not go 1.19
Erroneously I had used go 1.19 at various places.
Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
* Rearrange imports; fix golangci-lint errors
Fixed a bunch of golangci-lint errors like below:
`File is not `gofmt`-ed with `-s``
using the command: `golangci-lint run --fix`
Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
* Use go install instead of go get
This is because with go 1.18, `go get` behaves as `go get -d` by
default. Which means that it will only download, but not install.
Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
Signed-off-by: Dharmit Shah <shahdharmit@gmail.com>
* remove golangci-lint installation from test script
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* download golint in test script
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* use makefile to download golangci-lint
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* use official method to install linter
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* reduce test make targets, organize test file structure
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* remove report collection
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* Document golangci-lint configuration options
* Do not limit the number of issues reported per linter
* Add check preventing the use of the deprecated 'github.com/pkg/errors' package
* Upgrade golangci-lint to 1.37.0, so we can use 'revive' Linter
- revive is a drop-in replacement for the deprecated golint Linter
- revive will allow to check for error strings
Note: We are purposely not using the latest golangci-lint (1.45.0)
but the minimum version from which revive is available.
This is because the latest 1.45.0 reports additional linting issues
(from govet and staticcheck for example). And fixing those side errors
is outside of the scope of this issue.
Also some of those issues are already fixed in #5497 (update to Go 1.17).
* Configure revive to check for error strings
More rules can be added later on if needed
* Fix issues reported by revive's error-strings rule
Some rules are purposely ignored when the
error messages represent top-level errors that are
displayed to be displayed as is to end users
* Fix more error-strings issues
For some reason, those were not reported by revive's error-strings rule,
but only by GoLand inspection tool.
* Fix missing `revive:disable:error-strings` comment directive
Also replace "fmt.Errorf" by "errors.New" when the error message is static
* Update vendoring for coloring to add NO_COLOR
* Updates odo init output / adds logo
<!--
Thank you for opening a PR! Here are some things you need to know before submitting:
1. Please read our developer guideline: https://github.com/redhat-developer/odo/wiki/Dev:-odo-Dev-Guidelines
2. Label this PR accordingly with the '/kind' line
3. Ensure you have written and ran the appropriate tests: https://github.com/redhat-developer/odo/wiki/Dev:-Writing-and-running-tests
4. Read how we approve and LGTM each PR: https://github.com/redhat-developer/odo/wiki/Pull-Requests:-Review-guideline
Documentation:
If you are pushing a change to documentation, please read: https://github.com/redhat-developer/odo/wiki/Documentation:-Contributing
-->
**What type of PR is this:**
<!--
Add one of the following kinds:
/kind bug
/kind cleanup
/kind tests
/kind documentation
Feel free to use other [labels](https://github.com/redhat-developer/odo/labels) as needed. However one of the above labels must be present or the PR will not be reviewed. This instruction is for reviewers as well.
-->
/kind feature
**What does this PR do / why we need it:**
We have the logo appearing in `odo dev` and `odo deploy`
Those 3 commands are the most used with `odo`, and the ones that are
most used. All three should have similar and consistent output that
contains:
* What the component is doing (first line)
* What's detected (in odo init, it's the files, in odo deploy and dev
it's the component name)
* odo version that is being used / outputted.
```sh
$ odo init
__
/ \__ Initializing a new component
\__/ \ Files: No source code detected, a starter project will be created in the current directory
/ \__/ odo version: v2.5.0
\__/
Interactive mode enabled, please answer the following questions:
? Select language: javascript
? Select project type: Next.js
✓ Downloading devfile "nodejs-nextjs" from registry "DefaultDevfileRegistry" [450ms]
? Which starter project do you want to use? nodejs-nextjs-starter
? Enter component name: my-nodejs-nextjs-app
✓ Downloading starter project "nodejs-nextjs-starter" [516ms]
Your new component 'my-nodejs-nextjs-app' is ready in the current directory.
To start editing your component, use 'odo dev' and open this folder in your favorite IDE.
Changes will be directly reflected on the cluster.
```
**Which issue(s) this PR fixes:**
<!--
Specifying the issue will automatically close it when this PR is merged
-->
N/A
**PR acceptance criteria:**
- [X] Unit test
- [X] Integration test
- [X] Documentation
**How to test changes / Special notes to the reviewer:**
N/A
Signed-off-by: Charlie Drage <charlie@charliedrage.com>
* Update based on reviews
Signed-off-by: Charlie Drage <charlie@charliedrage.com>
* Update based on review
Signed-off-by: Charlie Drage <charlie@charliedrage.com>
* Remove `odo url` from CLI layer
* Adapt tests
* Adapt test from deleted `cmd_devfile_delete_test.go`
This test still makes sense, as it tests the removal
of URL-related resources, like Services and Ingresses.
* Remove call to `odo project set ...` in test, as suggested in review
This command will get removed in the near future.
* Remove places where URL manipulation could modify Devfiles
Also remove dead code
* Remove unused `updateURL` field from EnvInfo struct
* Adapt test by mimicking some behavior that `odo url create` used to perform
`odo url` used to modify the `env.yaml` file,
and `odo dev` currently creates Kubernetes/OCP resources related to URLs.
We may remove this test later on if `odo dev`
no longer needs to create such Ingresses and Routes.
* Remove all places where URLs, Ingresses and Routes are manipulated
* Port test in cmd_dev_test instead and make sure no Ingress/Route is created
* Remove no-longer `test-cmd-devfile-url` target from Makefile
The corresponding test file has been deleted.
* Remove `create url` command reference from V3 docs, as suggested in review
* Use existing `devfile-with-multiple-endpoints.yaml` Devfile in test, as suggested in review
* Cleanup create code
* Add missing integration tests from odo create to odo init
* Add CreateLocalEnv to create .odo/env/env.yaml file for commands that require it but cannot create it
* Remove 'odo create' usages from integration tests
* Remove create reference from the Makefile
* REmove create doc from v3
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* Remove test files
* Fix CI failure
Signed-off-by: Parthvi Vala <pvala@redhat.com>
* remove odo catalog command
- move devfile registry relevant code to pkg/registry
* remove odo catalog page form docs
* remove a few forgotten uses of catalog from clientset.go
* fix typos in docs
This is because such targets run tests that rely on the `odo` binary
to execute subcommands in separate processes.
While iterating on the code, we could often end up with situations where
the `odo` binary is no longer up-to-date, should we forget to `make install` before.
* POC for odo interactive testing
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* add interactive tests to make target test-integration
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* [WIP] use func to pass test instructions
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* cleanup comments/test
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* cleanup minor changes
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* fix unit test failure
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* skip for windows
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* skip for windows by not compiling, cleanup
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* cleanup, and add the make target to test files
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* incorporate review, adding comments, cleanup
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* fix failing make validate
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* update test dependency, and possible fix for windows
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* Revert "update test dependency, and possible fix for windows"
This reverts commit 55580b7dc5.
* Final cleanup
Signed-off-by: anandrkskd <anandrkskd@gmail.com>
* Use an image with pre-installed oc/kubectl/ibmcloud for IBM Pipelines
* Increase time for unit tests (very long on single CPU VM)
* Dockerfile for build image
* Scripts for PSI minishift tests
* added line at end of script
* added line at end of script
* emoved info as requested
* Updates as per review feedback
* deleting unwanted script as it was replaced with other files
* Scripts for PSI minishift tests
* Applied workaround to use env variable to select minikube or minishift
* Set CLUSTER env variable to appply workaround for firewall not taking parameters
* added curl for missing script and added misiing /, removed unnecessary cd
* Separating minishift from merged minikube-minishift scripts due to firewall not taking parameters for script execution
* Changes to run tests in IBM Cloud, changed TEST_EXEX_NODES=24
* remove non required changes (old stuff) and remove non required scripts (old stuff)
* Modified and added scripts to run tests in IBM Cloud cluster
* Additional changes for to run K8S test in IBM Cloud
* Removed unnecessary line
* changes to run tests on K8S cluster in IBM Cloud
* ncorportaed changes based on feedback for IBM Cloud tests
* Chnages based in feedback for IBM Cloud
* updated string for home dir
* removing test-integration-devfile as it ends with failures
* Fixed if statement
* changes to Makefile for number of nodes
* added requested comment to Makefile about nodes if running in IBM Cloud
* Removing cli layer and integration tests related to service catalog
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing missing error msg
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing golint errors
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing error for interactive mode
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Moving interactive mode error to top
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing interactive mode error condition
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Removing some more service related code
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing golint
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Removing service catalog backend part 1
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Updating changelogs
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Removing some more of the service catalog related code
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Updating as per comments in review
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Update pkg/odo/cli/service/create.go
Co-authored-by: Parthvi Vala <pvala@redhat.com>
* Fixing gofmt
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Adding kube to cli docs
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Updating changelog as per comments by @dharmit
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Removing some unnessasary stuff
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Updating docs based changes as per review
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Fixing test
Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
* Update pkg/odo/cli/catalog/describe/service.go
Co-authored-by: Philippe Martin <contact@elol.fr>
* Update pkg/odo/cli/service/list.go
Co-authored-by: Philippe Martin <contact@elol.fr>
Co-authored-by: Parthvi Vala <pvala@redhat.com>
Co-authored-by: Philippe Martin <contact@elol.fr>
* Do not deploy sbr at `odo link` time, save it in devfile
* Changelog
* Fix remove duplicates
* Do not set owner references again
* Fix wait for pod terminating
* Simplify env vars deduplication
* Add comment
* Dont use oc
* link type
* fix
* Fix spinner
* Fix tests
* Fic error message for link/unlink
* Review
* No spinner
* export GOFLAGS=-mod=vendor in Makefile
* use go get instead of go install
for installing test dependencies
* use tools approach to manage testing dependencies
When using this apporoach we can make sure that all dependencies in a
proper version are vendored with the source code.
* go mod vendor
* add wwhrd expection for github.com/hinshun/vt10x