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

Platform proposal #1

Closed

Conversation

oliver-sanders
Copy link
Owner

No description provided.

(including `localhost`).

* If a platform has a list of hosts then the host used for each operation on that
platform (job submission, polling, log retrieval, etc) will be randomised. This
Copy link
Owner Author

Choose a reason for hiding this comment

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

Since the host select functionality was migrated to Cylc we have selection criterion and thresholds we could also use.

(There is considerable scope to improve this for little extra work if interested, see cylc/cylc-flow#3391)

It would make sense to unify this with the existing host select functionality.

* Note that the platform will be selected each time a job is run. If you
specify a list of platforms, tasks must not assume that retries of that task
will use the same platform.
* For convenience it will also be possible to specify a platform alias which
Copy link
Owner Author

Choose a reason for hiding this comment

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

This gives us a pretty much complete rose host-select replacement.

On the rose host-selectie side of things, how does suite servers fit into this model?

suite servers is effectively a logical grouping i.e:

platforms = cylc01, cylc02, cylc03, ...

Which also has some extra configuration for the manner of host selection.

will seldom be needed in the future (the main use at present is to select from
a list of login nodes). However, there are still cases where this may be
needed. For example running a command which:
* Returns the platform which has the shortest queue time.
Copy link
Owner Author

Choose a reason for hiding this comment

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

Note: Functionality we may want to build into Cylc.


```ini
[platforms]
[[desktop\d\d|laptop\d\d]]
Copy link
Owner Author

Choose a reason for hiding this comment

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

Using regexes in this way presents problems for inheritance / overriding due to the multitude of ways in which a regex could be specified.

Will need to think on whether there is a nice way to do this better.


* The default for `hosts` is the platform name and platform section headings can
be regular expressions to match multiple platform names. This allows us to
define many platforms in a single section and handles the case where you have
Copy link
Owner Author

Choose a reason for hiding this comment

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

This is effectively the old rose host-select functionality of grouping together "like" hosts. Perhaps there is a better way to specify these "groupings"?

* The default platform is `localhost`. At cylc 7, any settings for `localhost`
act as defaults for all other hosts but we do **not** propose doing this for
platforms. The downside is more duplication if you need to override a
particular setting for every platform but we think this is clearer and safer.
Copy link
Owner Author

Choose a reason for hiding this comment

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

Perhaps we might want to think about the "inheritance" model. Would it be a good idea if we were able to do something along the lines of:

[*]
    # settings which apply to *all* platforms

[abc\d\d\d]
    # settings which apply to abc123

[abc*]
    # settings which also apply to abc123

```ini
[platforms]
[[hpcl[12]-bg]]
hosts = ("-bg$","")
Copy link
Owner Author

Choose a reason for hiding this comment

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

hosts = s/-bg$//?

* The simplest example. The job will be run on the host `desktop01`.

`platform = special`
* There is no platform named `special` defined so this will fail validation.
Copy link
Owner Author

Choose a reason for hiding this comment

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

This is an interesting point. It means that suites could fail validation depending on the global configuration.

We should make this optional to allow for CI testing etc.

* The host used will be chosen at random.

`platform = hpcl1-bg, hpcl2-bg`
* The platform used will be chosen at random.
Copy link
Owner Author

Choose a reason for hiding this comment

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

I think it might be better to specify such "groupings" explicitly and more centrally, this would give us the ability to configure the behaviour of the group e.g. host selection method. Random is good, but for various reasons we have built extra functionality into Cylc already.


## Deprecation method

* You can't mix old with new. If `platform` is defined for **any** task then any
Copy link
Owner Author

Choose a reason for hiding this comment

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

So this would mean we can't override settings at the task level e.g:

[foo]
    platform = bar
    [[platform]]
        host = bar01  # hardcode a login node

This is probably a good thing the user should just go away and create a new platform with the modification.

Under this proposal, in particular the system of effectively naming platforms after their regexes, how could I duplicate a platform to apply a small diff?

@dpmatthews dpmatthews deleted the platform-proposal branch November 29, 2019 11:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants