Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

how to specify network access with example #381

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions src/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,51 @@ The reference runner and several other CWL implementations support running
those Docker format containers using the Singularity engine. Directly
specifying a Singularity format container is not part of the CWL standards.

## How do I specify when network access is required?

In CWL v1.1 and above, you need to specify when network access is required by
including the `NetworkAccess` requirement.
If `networkAccess` is `true`the tool must be able to make
outgoing connections to network resources.
If `networkAccess` is `false` or not specified, is false or not
specified, tools must not assume network access, except for localhost
Fienne marked this conversation as resolved.
Show resolved Hide resolved
(the loopback device).

Below is an example using `curl` where `networkAccess: true` which
allows the page with the link in the yaml file to be downloaded and
saves it in a `download.hmtl` file


```
cwlVersion: v1.2
class: CommandLineTool

requirements:
NetworkAccess:
networkAccess: true

baseCommand: curl

stdout: download.html

inputs:
url:
type: string
inputBinding:
position: 1

outputs:
out:
type: File
outputBinding:
glob: download.html
```

The input yaml file will be
```
url: https://www.commonwl.org/v1.2/
```

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we also need to document what happens when networkAccess: false. I believe this flag is a suggestion, and it may or may not block the network access (it does not in cwltool, yet, common-workflow-language/cwltool#1733).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The flag doesn't block the network access; I ran the above code with networkAcess: false and it still downloaded the file.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct. It's planned work for cwltool. But would be useful to document the expected behavior in the spec and maybe in cwltool as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So can I say that when the networkAccess value is false, the code still runs, but we do not expect it to?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we must say what happens in both cases. We can probably use or adapt the text from the specification, where it explains it's an indicative flag, what implementations/users can expect, and the meaning of true or false for the flag: https://www.commonwl.org/v1.2/CommandLineTool.html#NetworkAccess

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, thanks!

## Debug JavaScript Expressions

You can use the <code>--js-console</code> option of <code>cwltool</code>, or you can try
Expand Down