Commit Graph

72 Commits

Author SHA1 Message Date
Matej Vasek 966a150c58
fix: podman auto-svc has own control group (#1239)
This keeps the podman process alive while `func` receives
SIGKILL or SIGTERM.
We must keep podman alive for cleanup (e.g. container removal).

Signed-off-by: Matej Vasek <mvasek@redhat.com>

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-09-14 07:21:49 +00:00
Matej Vasek 1f5a95a4a7
Improvements for podman on Windows and macOS (#1230)
* fix: pack docker socket mounting with npipe

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* feat: trust ssh connection by podman machine

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix: socket mount on macOS with podman machine

The `podman machine start` outputs recipe for DOCKER_HOST setting,
following the recipe it was causing troubles,
since path in host OS and in the podman VM is different.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* chore: use go-winio library for handling npipes

Replacing unmaintained an buggy library.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* test: added test for podman machine auto connect

Signed-off-by: Matej Vasek <mvasek@redhat.com>

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-09-12 17:26:46 +00:00
Matej Vasek a6c885ef04
feat: UX improvements for docker/podman usage (#1224)
* Better error message I docker/podman not present.
* Auto detect podman machine's socket on mac/win.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-09-09 13:34:29 +00:00
David Fridrich e659256005
chore: use lower case *functions* in all CLI outputs (#1135)
* first run, F -> f

* fix

* fix

* misspells

* client*.go files

* add client*.go: misspells

* cmd dir test files

* docker dir

* function* files

* i*.go and job.go

* job.go,mock dir,repos*,s2i dir,schema dir,templates*

* test dir

* testing dir

* root dir *.go second round
2022-07-27 13:34:36 +00:00
Matej Vasek 36216e7fed
fix: image push authorization check (#1130)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-07-19 21:11:00 +00:00
Gunjan Vyas 0d0953aa1c
print registry and user name during image push (#1121) 2022-07-18 11:11:59 +00:00
Matej Vasek 3b198cb781
fix: image push authorization check (#1109)
Check that we can actually push image.

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-07-12 18:44:13 +00:00
Matej Vasek a197f8b330
fix: correct error in OpenShift reg.cred.provider (#1104)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-07-11 15:04:12 +00:00
Matej Vasek e1d5229900
fix: use creds from creds store first (#1103)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-07-11 14:54:12 +00:00
Matej Vasek f0a33bd6bf
Fix: try empyt crets as last resort (#1100)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-07-08 16:30:08 +00:00
Matej Vasek 80505979f9
Improve usability of `func` CLI for IDE plugins (#1091)
* Better input handling for non-tty

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* Make cred-helper 'not implemented' non fatal error

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-07-01 05:07:42 +00:00
Matej Vasek f066218042
Add --platform flag for build/deploy sub-cmd (#1076)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-06-22 16:40:23 +00:00
Matej Vasek 51b99c0e67
fix: premature Close() of docker client (#1066)
* Fix docker client lifecycle

Avoid premature Close() of docker client.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* Guard for usage of docker client after close

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-06-16 17:14:17 +00:00
Matej Vasek 0aa8fe81bd
Better error message for podman auto service (#1030)
* Better error message for podman auto svc

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* change per review request

Co-authored-by: Lance Ball <lball@redhat.com>

Co-authored-by: Lance Ball <lball@redhat.com>
2022-06-09 07:03:38 +00:00
Matej Vasek ccfa02afdf
Use struct embedding instead of generated code (#1016)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-05-12 01:39:37 +00:00
Matej Vasek ac8f1d2d66
Allow empty credentials registry (#1004)
* Allow empty credentials registry

Useful when using local unsecured registry.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* Added tests for empty credentials registries

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-05-05 18:42:28 +00:00
Luke Kingland 8185c0acce
src: update runner with shared env interpolation (#992) 2022-04-25 22:48:54 +00:00
Luke Kingland a91bcc5fcf
feat: s2i builder with preliminary node support (#923)
* fix: stuck build ticker

* feat: s2i builder prototype

* default builders

* use s2i fork with updated docker

* in-code builder defaults

* s2i builder verbosity constructor arg

* typed errors

* typed error tests

* remove unneeded env code

* s2i build e2e test

* e2e tests

* update licenses

* cleanup

* codegen debug

* update licenses

* Revert "Update actions (#921)"

This reverts commit 8312b5c560.

* update licenses

* e2e test updates

* use GetDefaultDockerConfig for s2i config

* docker.NewClient docs
2022-04-05 13:08:44 +00:00
David Simansky bf68b221a6
Update Knative dependencies to v1.1 (#925)
* Update Knative dependencies to v1.1 (0.28)

* Update vendor dir

* Update lincenses

* Fix docker push test

* Refactor docker client interface
2022-03-31 13:45:45 +00:00
Luke Kingland 9a0335de7d
src: exported client constructor with options (#883)
* update root and version structure and help text

* fix: limit openshift int test with tag

* refactor: commands to use simplifed, unified constructor

* fix ineffectual assignment lint error

* cleanup

* add repository to run command

* callout for forthcoming s2i builder impl

* lint errors

* re-add the deferred client factory

* remove setNamespaceFlag now that it is persistent

* avoid side-effect of global-mutating deploy tests

* reduce line-by-line difference for PR ease

* simplificaiton of tests and comment lines for further PR ease purposes

* reduce inconsequential differences for ease of PR

* tests to RootCommandConfig

* review comment updates

* fix lint errors

* replace stdlib Setenv in tests

Using t.Setenv will require an update to go1.17, which is out of scope
for this PR.

* pass ClientFactory throughout

* explicitly empty test command args

See https://github.com/spf13/cobra/pull/155

Errors can still be encountered when, for example, using precomiled
tests.  Explicitly setting constructed command args to the empty slice
ensures we avoid hitting any futher edge cases.
2022-03-30 00:58:46 +00:00
Matej Vasek 669329f02f
Improve error handling (#916)
* replaced plain `==` by `error.Is()`
* wrapping some more errors using `fmt.Errorf()`

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-03-22 17:18:17 -07:00
Luke Kingland 5a122c31e6
src: promote verbosity to constructor arg (#869)
* update root and version structure and help text

* fix: limit openshift int test with tag

* src: verbosity to constructor param

* fix misspelling

* fix merge error
2022-03-04 11:19:36 -08:00
Matej Vasek 663fd29b76
Windows unit test fixes (#860)
* force run of `make test`

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix git file:// URIs

When using file:// forward slashes should be used.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix parsing of FS path from URI path

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* disable some test on Windows

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup: style

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* disable some test on Windows

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix some tests for Windows

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* disable some test on Windows

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-02-27 17:53:07 -08:00
Matej Vasek a2abfca3d3
src: error-less ctors (#818)
* src: no error ctors

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: no error ctors

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-02-08 12:20:16 -08:00
Matej Vasek 6c282e77c2
fix: error type-check condition (#786)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-01-26 09:44:45 -08:00
Matej Vasek 153e486bc6
fix: auth check (#773)
* fix: auth check

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix: auth check

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-01-21 12:45:04 -08:00
Luke Kingland e918f74b9e
feat!: invoke (#705)
* feat!: rename 'emit' to 'invoke' and default to local

This commit renames 'func emit' command to 'func invoke' and makes the
default behavior to send an event to localhost. The special '--sink'
value 'local' is changed to 'cluster' to indicate that the function
should be invoked on the cluster instead of locally. All other behavior
has remained the same.

BREAKING CHANGE

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: update commands.md doc

Signed-off-by: Lance Ball <lball@redhat.com>

* squash: change Emitter interface to Invoker

Changes Emit() to Send() in the (now named) Invoker interface, and changes
Emit() to Invoke() in the client.

BREAKING CHANGE

Signed-off-by: Lance Ball <lball@redhat.com>

* squash: use a common Invoker interface for HTTP and events

Signed-off-by: Lance Ball <lball@redhat.com>

* checkpoint

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: change Emitter to EventInvoker

Signed-off-by: Lance Ball <lball@redhat.com>

* Invoke v2 Draft

* feat: client invoke function

* static invoke defaults and methods

* remove assimilated invoker package

* includes an ignored .func directory on create

* Instances manager with local and remote defaults

Funciton Info is now Instance, representing a Function in a given
environment.

Describing a Function instance is now Instances().Get(f, environment)

Moves Runner to be async with a Stop method to enable returning runtime pid
and port for persisting.

Instances now have a place for primary Route in addition to all routes slice

Running Functions write PID and Port to .func

* cascading targets: local vs remote vs ad-hoc endpoint

* runner start signals and cancel cleanup

* return run on context done or err on channel

* async runner

Refactors the image runner to start the container asynchronously,
reporting back the port on which it started.  Errors are communicated
back via a provided channel and stop is signaled using context
cancelation.

* pid neither required nor available

* add withTransport option

Incorporates addition of custom transport of the emitter into the
renamed version invoker. Flag and help text cleanup.  Re-additionof the
Info accessor.

* schema now includes invocation data

* loop build msg

* run jobs

Externally exposed port is now chosen based on availability, with 8080
preferred and falling back to an os-chosen open port.
The Client Run method is now async, returning the port assigned to the
running Function, a stop/cleanup function and a runtime errors channel.
The Runner is internally divided into the runner and its started Jobs.

* job metadata

Extracts job metadata tracking to a Job object in the core,
Handles multiple instances of the same Function by creating a single
file for each instances in .func/instances/<port>

* remove superfluous error types and flag bindings

* feat: enable invoke target remote

* feat: preferentially invoke local, remote if running

* feat: read --file for invoke

* feat: invoke confirm prompts

* fixup cli tests

- Updates to handle asynchronous Runner
- Standardize on the naming convention for selective running

* docker runner tests and lint errors

* test refactor

* feat: invoke format override

* comments, spelling and other cleanup

* invoke command doc

* feat: invoke format interactive option

* rename runjob.go to job.go

* e2e test flag update

* test naming homoginization

* silence build activity messages when verbose

* test debugging

* code review updates

- return Job from Client.Run rather than constituent members
- Treat .gitignore as contentious, punting on feature to mutate if
  extant.
- docs wording changes
- add invocation format to pertinent manifest.yaml files

* help text spelling etc.

Co-authored-by: Lance Ball <lball@redhat.com>
2022-01-21 12:04:05 -08:00
Matej Vasek 15d617f99d
src: use common functionality for docker cred retrieval (#756)
* Use common functionality for docker cred retrieval

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup: docker auth secret for tekton pipeline

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup: style

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2022-01-13 03:52:12 -08:00
Matej Vasek 8d51393181
feat: allow push to cluster internal registries (#718)
* feat: allow push to cluster internal registries

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix: NewRoundTripper consults http.DefaultTransport

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: move credential code to sub-package

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: refactor

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: share RoundTripper

avoid creating expensive RoundTripper twice

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* test: added test for pusher

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: disable parallel layer upload

it's more reliable

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup: lint

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup: lint

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup: doc, rm commented code

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-12-20 14:28:17 -08:00
Fabian Lopez b190b52754
feat: allow build to be triggered from run when fn.Image is missing (#644)
* allow build to be triggered from run when fn.Image is missing

* add build check when run by the run command

* added unit test for run command

* remove log output

* rename run test

* change build trigger to be managed by a flag and not a prompt

* tlet users know about the --build flag in the error message

* fix code check issue

* add some debug info to the run_test

* Update cmd/run.go

Co-authored-by: Luke Kingland <58986931+lkingland@users.noreply.github.com>

* add build field to runConfig

* fix issue with cmd args for testing

* refactor run tests to use mocks

* update imageless function run error message

* add check for build error test case

* run unit test cleanup

* empty commit

Co-authored-by: Luke Kingland <58986931+lkingland@users.noreply.github.com>
2021-12-13 09:25:22 -08:00
Matej Vasek 27e1b0153a
Refactor credential provider (#707)
* src: cleanup

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: cleanup

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: cleanup

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: cleanup

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: cleanup

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: allow to set custom crednetial loader

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-12-09 14:19:28 -08:00
Matej Vasek fcb0c7139f
src: CheckAuth() calls registry directly (#704)
CheckAuth() calls registry directly
not using docker daemon as a middle-man

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-12-07 07:53:58 -08:00
Luke Kingland 92ac14a6f7
refactor: config path accessors with instantiation cleanup (#686)
* feat: config and repository path creation

Removes need to use a client to trigger creation of paths
Adds back static path accessors
Enables creation of paths when configured repos is outside config
Cleans up instantiation logic, including removal of some setters

* fix spelling mistakes per review
2021-12-06 06:03:28 -08:00
Luke Kingland db9ad07c70
feat: ensure config and repos path exists (#683) 2021-11-29 13:53:08 -08:00
Matej Vasek ee96bef9ae
fix: use default socket path for TCP connections (#669)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-19 12:16:23 -08:00
Matej Vasek 852626a975
Docker SSH test (#659)
* src: refactor tests

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: add comments

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: fix style

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* test: add test for ssh docker client

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: refactore rename struct

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: more reliable connection disposal

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: avoid unnecessary wrapping

When using dial-stdio the DialContext is not associated
with an SSH connection so wrapper with clean up is not needed.

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: add doc comment

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-14 17:18:54 -08:00
Matej Vasek 3ae08b01af
Refactor tests (#658)
* src: refactor tests

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: add comments

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: fix style

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-14 17:15:54 -08:00
Matej Vasek bfdfb760cf
feat: automatically start podman service (#648)
* feat: automatically start podman service

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: refactor rename function

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: add commnets to tests

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* src: refactor rename function

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-11 09:38:38 -08:00
Luke Kingland e20ac4c6b7
chore: build tag consistency (#654)
The integration tests and unit tests are currently expected to be
disjunct sets.  While we may change to being additive in the future,
this change makes us consistent by adding the integration exclusion tag
to a few non-integration test files where it was currently missing.
2021-11-11 08:45:38 -08:00
Matej Vasek e1f164d2ca
feat: ssh connection to remote docker daemon (#594)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-11-02 09:39:41 -07:00
knative-automation cd45b6c007
Format go code (#589)
Signed-off-by: Knative Automation <automation@knative.team>
2021-10-18 10:08:22 +02:00
Matej Vasek e85a4aa7f3
feat: Save password after user input (#560)
* Save password after user input

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* Improve wording

Signed-off-by: Matej Vasek <mvasek@redhat.com>
Co-authored-by: Lance Ball <lball@redhat.com>

* Apply suggestions from code review

Signed-off-by: Matej Vasek <mvasek@redhat.com>
Co-authored-by: Zbynek Roubalik <726523+zroubalik@users.noreply.github.com>

* Improve test

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* Fix for symlinks

Signed-off-by: Matej Vasek <mvasek@redhat.com>

Co-authored-by: Lance Ball <lball@redhat.com>
Co-authored-by: Zbynek Roubalik <726523+zroubalik@users.noreply.github.com>
2021-10-13 06:29:47 -07:00
Matej Vasek b10c48453c
fix: registry URL comparison (#549)
* fix: registry URL comparison

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* Changed port equivalence

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-09-23 08:04:14 -07:00
Matej Vasek 8e882bc934
Add serveraddress to auth header of docker API (#543)
* Add serverURL to RegistryAuth

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fixup

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-09-20 07:52:36 -07:00
Matej Vasek 4236ba9287
Better credentials handling (#526)
Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-09-16 02:57:39 -07:00
Luke Kingland ae638c349c
feat: repository management cli (#514)
* feat: repository management cli

* src: cleanup imports, newlines, spelling and trailing whitespace
2021-09-09 08:09:00 -07:00
Lance Ball 71368c6a1d
chore: update files with goimport (#513)
* chore: update files with goimport

This should get https://github.com/knative-sandbox/kn-plugin-func/pull/509
happy and green.

Signed-off-by: Lance Ball <lball@redhat.com>

* fixup: remove extraneous print statements

Signed-off-by: Lance Ball <lball@redhat.com>
2021-09-08 06:53:45 -07:00
Senthilnathan M 78d7a1af3a
Support nested image paths (#464)
* Support nested image paths

* Added test for image path parsing
2021-08-11 20:31:34 -07:00
Matej Vasek 79e2234cbc
fix: hide progress indicator if asking for creds (#458)
* fix: hide progress indicator if asking for creds

Signed-off-by: Matej Vasek <mvasek@redhat.com>

* fix: NPE in integration test

Signed-off-by: Matej Vasek <mvasek@redhat.com>
2021-08-05 10:41:52 -07:00
Markus Thömmes 892558bf2a
Rename module to knative.dev/kn-plugin-func (#423)
Co-authored-by: Lance Ball <lball@redhat.com>
2021-07-15 11:33:32 -07:00