Page MenuHomeVyOS Platform

jestabro (John Estabrook)
User

Projects

User Details

User Since
Apr 12 2019, 4:27 PM (63 w, 5 d)

Recent Activity

Today

jestabro closed T2668: get_config_dict: add get_first_key arg to utility function get_sub_dict, a subtask of T2667: get_config_dict: Use utility function for non-empty path argument, as Resolved.
Thu, Jul 2, 1:47 AM · VyOS 1.3 Equuleus
jestabro closed T2668: get_config_dict: add get_first_key arg to utility function get_sub_dict as Resolved.
Thu, Jul 2, 1:47 AM · VyOS 1.3 Equuleus

Yesterday

jestabro closed T2662: get_config_dict includes node name as key only for tag and leaf nodes as Resolved.

Addressed by T2667.

Wed, Jul 1, 11:46 PM · VyOS 1.3 Equuleus
jestabro closed T2667: get_config_dict: Use utility function for non-empty path argument, a subtask of T2662: get_config_dict includes node name as key only for tag and leaf nodes, as Resolved.
Wed, Jul 1, 11:45 PM · VyOS 1.3 Equuleus
jestabro closed T2667: get_config_dict: Use utility function for non-empty path argument as Resolved.
Wed, Jul 1, 11:45 PM · VyOS 1.3 Equuleus
jestabro added a subtask for T2667: get_config_dict: Use utility function for non-empty path argument: T2668: get_config_dict: add get_first_key arg to utility function get_sub_dict.
Wed, Jul 1, 7:22 PM · VyOS 1.3 Equuleus
jestabro added a parent task for T2668: get_config_dict: add get_first_key arg to utility function get_sub_dict: T2667: get_config_dict: Use utility function for non-empty path argument.
Wed, Jul 1, 7:22 PM · VyOS 1.3 Equuleus
jestabro created T2668: get_config_dict: add get_first_key arg to utility function get_sub_dict.
Wed, Jul 1, 7:22 PM · VyOS 1.3 Equuleus
jestabro added a subtask for T2662: get_config_dict includes node name as key only for tag and leaf nodes: T2667: get_config_dict: Use utility function for non-empty path argument.
Wed, Jul 1, 6:55 PM · VyOS 1.3 Equuleus
jestabro added a parent task for T2667: get_config_dict: Use utility function for non-empty path argument: T2662: get_config_dict includes node name as key only for tag and leaf nodes.
Wed, Jul 1, 6:55 PM · VyOS 1.3 Equuleus
jestabro moved T2667: get_config_dict: Use utility function for non-empty path argument from Need Triage to In Progress on the VyOS 1.3 Equuleus board.
Wed, Jul 1, 6:39 PM · VyOS 1.3 Equuleus
jestabro updated the task description for T2667: get_config_dict: Use utility function for non-empty path argument.
Wed, Jul 1, 6:39 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2667: get_config_dict: Use utility function for non-empty path argument.

https://github.com/vyos/vyos-1x/pull/486

Wed, Jul 1, 6:37 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2667: get_config_dict: Use utility function for non-empty path argument from Open to Needs testing.
Wed, Jul 1, 6:24 PM · VyOS 1.3 Equuleus
jestabro renamed T2662: get_config_dict includes node name as key only for tag and leaf nodes from get_config_dict includes node as key only for tag and leaf nodes to get_config_dict includes node name as key only for tag and leaf nodes.
Wed, Jul 1, 5:12 PM · VyOS 1.3 Equuleus

Tue, Jun 30

jestabro added a comment to T2662: get_config_dict includes node name as key only for tag and leaf nodes.

Okay, I will revise that: ... Consequently it returns None for nonsensical input and {} for non-existent paths ...

Tue, Jun 30, 4:05 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2662: get_config_dict includes node name as key only for tag and leaf nodes.

The reason to return the data indexed by a tag: leaf nodes; the data is not a dict. If one wants consistency, then data of a node is returned indexed. This function does one specific thing: return a sub-dictionary from a dictionary, so

Tue, Jun 30, 3:44 PM · VyOS 1.3 Equuleus
jestabro updated the task description for T2662: get_config_dict includes node name as key only for tag and leaf nodes.
Tue, Jun 30, 2:04 AM · VyOS 1.3 Equuleus
jestabro added a comment to T2662: get_config_dict includes node name as key only for tag and leaf nodes.

One compelling idea is to move the implementation of the path argument in get_config_dict out of show_config, and replace it with a function to get a sub dictionary from the full get_config_dict. An example implementation is below. This would not only normalize the result, independent of idiosyncrasies of the current backend, but also future proof the form for the switch to vyconf. Secondly, it would allow us to remove the dependency on show_config itself, since that call is already made at Config initialization. Thirdly, it would allow consistent transfer to off-line config instance, namely those for testing and offload to daemon.

Tue, Jun 30, 1:44 AM · VyOS 1.3 Equuleus

Mon, Jun 29

jestabro updated the task description for T2662: get_config_dict includes node name as key only for tag and leaf nodes.
Mon, Jun 29, 9:26 PM · VyOS 1.3 Equuleus
jestabro updated the task description for T2662: get_config_dict includes node name as key only for tag and leaf nodes.
Mon, Jun 29, 9:24 PM · VyOS 1.3 Equuleus
jestabro triaged T2662: get_config_dict includes node name as key only for tag and leaf nodes as High priority.
Mon, Jun 29, 9:19 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2636: get_config_dict() shall always return a list on <multi/> nodes.

But you make an excellent point, @thomas-mangin ; it may be best to normalize that within config_dict itself, now that we have the xml processing available ...

Mon, Jun 29, 1:42 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2636: get_config_dict() shall always return a list on <multi/> nodes.

showConfig produces the following for multi-nodes:

Mon, Jun 29, 12:58 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2636: get_config_dict() shall always return a list on <multi/> nodes.

The value vs list is not produced by showConfig, but rather due to matching in configtree. We'll let @dmbaturin consider if this is an issue or not, but I imagine a jinja macro could address the problem where it occurs in template generation.

Mon, Jun 29, 12:51 PM · VyOS 1.3 Equuleus

Sat, Jun 27

jestabro lowered the priority of T2612: HTTPS API, changing API key fails but goes through from High to Normal.

Changing the api settings (for example: keys, port) will cause a disruptive reload of the http-api service; it will of course succeed, but the response for that set command will reflect the reloading. This is known, if misleading behaviour. I will lower this to normal priority, and consider if we can improve the error/success message.

Sat, Jun 27, 1:45 PM · VyOS 1.3 Equuleus

Thu, Jun 25

jestabro added a comment to T2649: Ensure configration mode scripts conform to coding guidelines.

@jjakob that is in fact what we are doing: for stability, some of the changes are necessarily incremental --- these are not new abstractions, but rather, refinements of the existing ones, which allow the separation of new code from legacy. We are avoiding any patching of the old backend, simply replacing with the structures which will allow a switch to vyconf, while improving performance and extension of the new code.

Thu, Jun 25, 3:30 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2649: Ensure configration mode scripts conform to coding guidelines.

I agree @jjakob that we are still converging on the best way to structure the salient information, namely the difference between effective and session configs, however this will be internalized: a simple example of use for testing and daemon (and other) is:

Thu, Jun 25, 1:59 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2649: Ensure configration mode scripts conform to coding guidelines.

I'm not sure that we have to go that far, but let me take a closer look, and we can discuss; the model is to be able to call, in batch, the functions of an arbitrary conf_mode script, without variation in structure or behaviour.

Thu, Jun 25, 1:55 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2649: Ensure configration mode scripts conform to coding guidelines.

Only that it inherits from Config, hence the form of the Config instance can not be changed, say, to 'off-line' Config, or 'testing' Config, which would have different init functions; if it took Config as an argument instead, or a named argument with default the 'live' Config, then it would not be an issue for generalization. But we should discuss the details further, and collect results and suggestions.

Thu, Jun 25, 1:41 PM · VyOS 1.3 Equuleus
jestabro added a subtask for T2582: Script daemon to offload processing during commit: T2649: Ensure configration mode scripts conform to coding guidelines.
Thu, Jun 25, 12:32 PM · VyOS 1.3 Equuleus
jestabro added a parent task for T2649: Ensure configration mode scripts conform to coding guidelines: T2582: Script daemon to offload processing during commit.
Thu, Jun 25, 12:32 PM · VyOS 1.3 Equuleus
jestabro created T2649: Ensure configration mode scripts conform to coding guidelines.
Thu, Jun 25, 12:29 PM · VyOS 1.3 Equuleus

Wed, Jun 24

jestabro updated the task description for T2582: Script daemon to offload processing during commit.
Wed, Jun 24, 6:55 PM · VyOS 1.3 Equuleus

Thu, Jun 18

jestabro claimed T2612: HTTPS API, changing API key fails but goes through.
Thu, Jun 18, 12:17 PM · VyOS 1.3 Equuleus

Wed, Jun 17

jestabro updated the task description for T2582: Script daemon to offload processing during commit.
Wed, Jun 17, 1:12 AM · VyOS 1.3 Equuleus

Tue, Jun 16

jestabro closed T2568: Add some missing checks in config, a subtask of T2501: Cannot recover from failed boot config load, as Resolved.
Tue, Jun 16, 3:54 PM · VyOS 1.3 Equuleus
jestabro closed T2568: Add some missing checks in config as Resolved.
Tue, Jun 16, 3:54 PM · VyOS 1.3 Equuleus
jestabro closed T2604: Remove use of is_tag in system-syslog.py as Resolved.
Tue, Jun 16, 3:51 PM · VyOS 1.3 Equuleus
jestabro created T2604: Remove use of is_tag in system-syslog.py.
Tue, Jun 16, 3:20 PM · VyOS 1.3 Equuleus

Thu, Jun 11

jestabro added a comment to T2582: Script daemon to offload processing during commit.
  1. commit restrictions/permissions have not changed; all handled in the backend.
  2. The daemon can not load the configs, as it does not have/need access to the config session; that's the point.
  3. ?
  4. the conf_mode script needs to reference the global config; re-setting level is basic hygiene --- the script should ask itself 'what if I am called again?'
  5. we want to eat the args in the node.def; so you already have it.
Thu, Jun 11, 1:51 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2582: Script daemon to offload processing during commit from Open to In progress.
Thu, Jun 11, 3:00 AM · VyOS 1.3 Equuleus

Mon, Jun 8

jestabro added a comment to T2501: Cannot recover from failed boot config load.

@jjakob. to clarify two points (for my sake as well), there are cases where config fails to the point where the config session can not be initialized, such that one can not enter a config session: here's an example --- say. during development, someone forgets to import a module in an early conf_mode script; config initialization is completely screwed --- this had occurred ages ago, and the only way I found it was that I had happened to be looking at their code a few moments previously and noticed ... that's what vyos-config-debug is for, and why it is hidden on a boot flag. You are talking about a much more reasonable case, where (I imagine) a specific configuration causes a partial failure, but one can still enter a config session. The checks in subtask T2568 may help restore the ability to debug by config/load/commit. Those checks are needed anyway.

Mon, Jun 8, 2:52 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2568: Add some missing checks in config, a subtask of T2501: Cannot recover from failed boot config load, from In progress to Needs testing.
Mon, Jun 8, 2:25 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2568: Add some missing checks in config from In progress to Needs testing.

https://github.com/vyos/vyos-1x/compare/current...jestabro:config-checks.patch

Mon, Jun 8, 2:25 PM · VyOS 1.3 Equuleus
jestabro added a subtask for T2501: Cannot recover from failed boot config load: T2568: Add some missing checks in config.
Mon, Jun 8, 2:23 PM · VyOS 1.3 Equuleus
jestabro added a parent task for T2568: Add some missing checks in config: T2501: Cannot recover from failed boot config load.
Mon, Jun 8, 2:23 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2568: Add some missing checks in config from Open to In progress.
Mon, Jun 8, 2:23 PM · VyOS 1.3 Equuleus

Sat, Jun 6

jestabro changed the status of T2501: Cannot recover from failed boot config load from Open to In progress.
Sat, Jun 6, 10:11 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2501: Cannot recover from failed boot config load.

I agree with the downside of vyos-config-debug; it was provided to allow some analysis when other was not available. What was done before was a straight call to the vyatta backend; what is done now is a essentially what you're suggesting, but in a case where the context of config/configtree is not successfully initialized, hence the failure. This is a good point for analysis, however, and I will restore the behaviour, likely by (a) using a straight call to the backend, and meanwhile (b) investigating if we can have partial context for config/configtree in this case.

Sat, Jun 6, 8:46 PM · VyOS 1.3 Equuleus
jestabro changed the subtype of T2501: Cannot recover from failed boot config load from "Task" to "Bug".
Sat, Jun 6, 3:17 PM · VyOS 1.3 Equuleus
jestabro lowered the priority of T2501: Cannot recover from failed boot config load from Unbreak Now! to Normal.

The now standard method of debugging was clarified in T2409, with reference to this ticket (vyos-config-debug); the question here is whether there is any way to use 'configure; load; commit' on failed boot config load --- in the worst cases, no, as the CLI has not succssfully initialized, but will investigate. Changing to bug for evaluation.

Sat, Jun 6, 3:15 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2554: Failsafe reboot timer.

Yes, and a simple failsafe timer to reboot to old image does not require changes to migration, as original config lives in the old image; a timer would be of use if manually accessing grub on boot is inconvenient.

Sat, Jun 6, 2:50 PM · VyOS 1.3 Equuleus
jestabro claimed T2554: Failsafe reboot timer.

@jjakob Thanks for a good summary of one of the issues, namely, not replacing config until 'success' (at least of boot, if not other criteria). Migration does save a backup, but we had recently discussed not doing in place change by default. I would like to assess this in relation to other recent discussions of failsafe and rollback, and then proceed with that compatible change first ...

Sat, Jun 6, 2:29 PM · VyOS 1.3 Equuleus

May 27 2020

jestabro added a comment to T2397: HTTP API: export OpenAPI definition.

Test package for 'vyos-api-tools' here:
https://github.com/jestabro/vyos-api-tools

May 27 2020, 8:26 PM · VyOS 1.3 Equuleus
jestabro closed T2396: Add debian package for flask-restx, a subtask of T2395: HTTP API move to flask/flask-restx as microframework, as Invalid.
May 27 2020, 7:28 PM · VyOS 1.3 Equuleus
jestabro closed T2396: Add debian package for flask-restx as Invalid.

Dependency dropped.

May 27 2020, 7:28 PM · VyOS 1.3 Equuleus
jestabro removed a parent task for T2397: HTTP API: export OpenAPI definition: T2395: HTTP API move to flask/flask-restx as microframework.
May 27 2020, 7:27 PM · VyOS 1.3 Equuleus
jestabro removed a subtask for T2395: HTTP API move to flask/flask-restx as microframework: T2397: HTTP API: export OpenAPI definition.
May 27 2020, 7:27 PM · VyOS 1.3 Equuleus
jestabro closed T2395: HTTP API move to flask/flask-restx as microframework as Resolved.

The dependency on flask-restx was dropped, in favor of FastAPI. The move to Flask itself for stability was completed,

May 27 2020, 7:27 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2397: HTTP API: export OpenAPI definition, a subtask of T2395: HTTP API move to flask/flask-restx as microframework, from In progress to Needs testing.
May 27 2020, 7:14 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2397: HTTP API: export OpenAPI definition from In progress to Needs testing.

The dependencies, such as FastAPI, are to be collected in the debian package 'vyos-api-tools'. Screenshot of the redoc page below:

May 27 2020, 7:14 PM · VyOS 1.3 Equuleus

May 23 2020

jestabro added a comment to T2409: At boot, effective config should not be equal to current config.

Cool, thanks for pointing this out; I will take T2501, and will probably rename for clarity.

May 23 2020, 9:52 PM · VyOS 1.3 Equuleus
jestabro claimed T2501: Cannot recover from failed boot config load.
May 23 2020, 9:50 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2409: At boot, effective config should not be equal to current config.

@jjakob, yes I see the issue there; but firstly, did you try debugging with boot parameter 'vyos-config-debug' ? cf.

May 23 2020, 8:50 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2409: At boot, effective config should not be equal to current config.

@jjakob yes, thanks for pointing this out ...

May 23 2020, 8:34 PM · VyOS 1.3 Equuleus
jestabro closed T2203: http api: "Failed to generate committed config" , a subtask of T1899: Unionfs metadata folder is copied to the active configuration directory, as Resolved.
May 23 2020, 7:01 PM · VyOS 1.3 Equuleus
jestabro closed T2203: http api: "Failed to generate committed config" as Resolved.

Thanks, @fetzerms !

May 23 2020, 7:01 PM

May 22 2020

jestabro added a comment to T2497: Cache config string during commit.

low-brow caching:

May 22 2020, 8:50 PM · VyOS 1.3 Equuleus
jestabro updated the task description for T2497: Cache config string during commit.
May 22 2020, 8:47 PM · VyOS 1.3 Equuleus
jestabro created T2497: Cache config string during commit.
May 22 2020, 8:47 PM · VyOS 1.3 Equuleus
jestabro closed T2496: Set default to new syntax for config file component versions, a subtask of T2029: Switch to new syntax for config file component versions, as Resolved.
May 22 2020, 8:20 PM · VyOS 1.3 Equuleus
jestabro closed T2496: Set default to new syntax for config file component versions as Resolved.
May 22 2020, 8:20 PM · VyOS 1.3 Equuleus
jestabro added a parent task for T2496: Set default to new syntax for config file component versions: T2029: Switch to new syntax for config file component versions.
May 22 2020, 8:07 PM · VyOS 1.3 Equuleus
jestabro added a subtask for T2029: Switch to new syntax for config file component versions: T2496: Set default to new syntax for config file component versions.
May 22 2020, 8:07 PM · VyOS 1.3 Equuleus
jestabro changed the status of T2496: Set default to new syntax for config file component versions from Open to In progress.
May 22 2020, 8:07 PM · VyOS 1.3 Equuleus

May 18 2020

jestabro added a comment to T2203: http api: "Failed to generate committed config" .

@fetzerms Have you seen this problem with the fix mentioned above ? If not, I will close.

May 18 2020, 5:06 PM
jestabro added a comment to T2474: Building instructions with Docker need a little more detail.

You want to fetch the repo before building; cf. the 'Generating the container section':

May 18 2020, 5:02 PM

May 17 2020

jestabro closed T2409: At boot, effective config should not be equal to current config as Resolved.
May 17 2020, 7:07 PM · VyOS 1.3 Equuleus

May 16 2020

jestabro closed T2466: live-build encounters apt dependency problem when building with local packages as Resolved.
May 16 2020, 12:25 AM · VyOS 1.3 Equuleus
jestabro changed the status of T2466: live-build encounters apt dependency problem when building with local packages from Open to In progress.
May 16 2020, 12:05 AM · VyOS 1.3 Equuleus

May 10 2020

jestabro changed the status of T2409: At boot, effective config should not be equal to current config from Open to Needs testing.
May 10 2020, 3:50 AM · VyOS 1.3 Equuleus
jestabro added a comment to T2409: At boot, effective config should not be equal to current config.

Suggested patch here:
https://github.com/vyos/vyos-1x/compare/current...jestabro:T2049.patch

May 10 2020, 3:50 AM · VyOS 1.3 Equuleus

May 8 2020

jestabro claimed T2409: At boot, effective config should not be equal to current config.

Okay @jjakob, thanks for pinpointing the concern: (quoting from above) 'IMO this should not read config.boot, but return an empty config' --- this is a reasonable position; I will test this modification, along with a consistent change to get_config_dict, and we can discuss.

May 8 2020, 2:54 PM · VyOS 1.3 Equuleus
jestabro added a comment to T2409: At boot, effective config should not be equal to current config.

I suggest you ignore T2030 for a moment --- I recall discussing that issue with the author, but I think the code comments are leading you astray ... we can return to that later.

May 8 2020, 7:03 AM · VyOS 1.3 Equuleus

May 6 2020

jestabro moved T2402: Live ISO should warn when configuring that changes won't persist from In Progress to Finished on the VyOS 1.2 Crux (VyOS 1.2.6) board.
May 6 2020, 2:53 PM · VyOS 1.2 Crux (VyOS 1.2.6), VyOS 1.3 Equuleus
jestabro moved T2402: Live ISO should warn when configuring that changes won't persist from Backport Candidates to Finished on the VyOS 1.3 Equuleus board.
May 6 2020, 2:53 PM · VyOS 1.2 Crux (VyOS 1.2.6), VyOS 1.3 Equuleus
jestabro moved T2402: Live ISO should warn when configuring that changes won't persist from Finished to In Progress on the VyOS 1.2 Crux (VyOS 1.2.6) board.
May 6 2020, 2:53 PM · VyOS 1.2 Crux (VyOS 1.2.6), VyOS 1.3 Equuleus
jestabro closed T2402: Live ISO should warn when configuring that changes won't persist as Resolved.
May 6 2020, 2:51 PM · VyOS 1.2 Crux (VyOS 1.2.6), VyOS 1.3 Equuleus
jestabro claimed T2402: Live ISO should warn when configuring that changes won't persist.
May 6 2020, 1:53 PM · VyOS 1.2 Crux (VyOS 1.2.6), VyOS 1.3 Equuleus
jestabro added a comment to T2428: api set protocols static route fail .

It appears you are sending a redundant 'set' within the path itself.

May 6 2020, 12:50 AM

May 5 2020

jestabro closed T1899: Unionfs metadata folder is copied to the active configuration directory as Resolved.
May 5 2020, 3:05 AM · VyOS 1.3 Equuleus
jestabro triaged T2203: http api: "Failed to generate committed config" as High priority.
May 5 2020, 3:01 AM
jestabro changed the status of T2203: http api: "Failed to generate committed config" , a subtask of T1899: Unionfs metadata folder is copied to the active configuration directory, from Open to Needs testing.
May 5 2020, 3:01 AM · VyOS 1.3 Equuleus
jestabro changed the status of T2203: http api: "Failed to generate committed config" from Open to Needs testing.
May 5 2020, 3:01 AM
jestabro added a comment to T2203: http api: "Failed to generate committed config" .

@fetzerms I believe this is resolved by the fix in T1899, which will be in the next rolling release.

May 5 2020, 2:59 AM

May 4 2020

jestabro added a subtask for T1899: Unionfs metadata folder is copied to the active configuration directory: T2203: http api: "Failed to generate committed config" .
May 4 2020, 9:12 PM · VyOS 1.3 Equuleus
jestabro added a parent task for T2203: http api: "Failed to generate committed config" : T1899: Unionfs metadata folder is copied to the active configuration directory.
May 4 2020, 9:12 PM
jestabro changed the status of T1899: Unionfs metadata folder is copied to the active configuration directory from Confirmed to In progress.
May 4 2020, 9:03 PM · VyOS 1.3 Equuleus
jestabro added a comment to T1899: Unionfs metadata folder is copied to the active configuration directory.

This is a result of a regression in unionfs-fuse, fixed in commit 93c2f9b, but not contained in the debian buster package v1.0. The naming convention for directories was changed from unionfs to unionfs-fuse, and then reverted, forgetting to revert the meta directory name. Consequently, bad things can happen for packages that had defined the meta directory consistent with the pre-v1.0 naming, for example, vyatta-cfg. Two fixes have been tested with initial success: (1) patch unionfs-fuse (2) change the meta directory name in vyatta-cfg. Either fix passes initial tests, although closer scrutiny is warranted, as it is a critical issue. The downside of (1) is the need to maintain an upstream or patched version of unionfs-fuse; the downside of (2) is that we are accommodating a regression, which will break again when/if the upstream package is available. Likely the quickest solution is preferred, as this issue is implicated in several recent bug reports.

May 4 2020, 9:03 PM · VyOS 1.3 Equuleus