
Script to assist migrating a VCL file from Varnish 3 to 4.x.
$ varnish3to4 -o <filename>.v4 <filename>
$ diff -u <filename> <filename>.v4
To include changes for Varnish 4.1:
$ varnish3to4 --41 -o <filename>.v4 <filename>
$ diff -u <filename> <filename>.v4
| V3 | V4 |
|---|---|
| {bereq,req}.backend.healthy | std.healthy({bereq.backend,req.backend_hint}) |
| {bereq,req}.request | {bereq,req}.method |
| bereq.* in vcl_pass and vcl_miss | req.* |
| {beresp,obj,resp}.response | {beresp,obj,resp}.reason |
| beresp.storage | beresp.storage_hint |
| {client,server}.port | std.port({client,server}.ip) |
| error code response | return (synth(code, response)) |
| obj.hits - writing to | - |
| obj.* in vcl_synth | resp.* |
| obj.lastuse | - |
| remove | unset |
| req.backend | req.backend_hint |
| req.grace | - |
| req.* in vcl_backend_response | bereq.* |
| return (fetch) in vcl_hit [1][2] | return (miss) |
| return (hash) in vcl_hash | return (lookup) |
| return (hit_for_pass) | set beresp.uncacheable = true; return (deliver); |
| return (lookup) in vcl_recv | return (hash) |
| return (pass) in vcl_pass | return (fetch) |
| return (restart) in vcl_fetch | return (retry) |
| std.real2integer(..) [1] | std.real2integer(.., n) |
| std.time2integer(..) [1] | std.time2integer(.., n) |
| std.time2real(..) [1] | std.time2real(.., n.n) |
| synthetic .. | synthetic(..) |
| vcl_error | vcl_backend_error and vcl_synth |
| vcl_fetch | vcl_backend_response |
| V3 | V4 |
|---|---|
| purge | - |
| V3 | V4 |
|---|
- | vcl 4.0
- | import directors
new xx = directors.yy();
xx.add_backend(ss);
set req.backend_hint = xx.backend();
Add imports resulting from changes in V4, complete purge handling and any other changes missing from this document.
- Varnish 4.1 and above.
- This change is optional in 4.1 but mandatory starting with 5.0.