Commit Graph

34 Commits

Author SHA1 Message Date
Gabriella Gonzalez
afb6a25771
Upgrade dhall-haskell (#192)
Fixes https://github.com/dhall-lang/dhall-kubernetes/issues/191

… by no longer mistakenly preferring `v1` or `v2beta{1,2}` over all
other versions
2023-12-28 20:58:28 +01:00
Gabriella Gonzalez
78e9df229b
Add support for kubernetes 1.26 (#189)
… and also update a few other things along the way
2023-06-21 03:00:18 +02:00
Gabriella Gonzalez
753c7d04fb
Add support for Kubernetes versions 1.{23,24,25} and change default (#186) 2022-08-25 08:58:00 -07:00
Gabriella Gonzalez
299351e9df
Upgrade dhall-haskell reference (#182)
… to pick up the `NatOrString` changes from:

71a8374c2a
2022-03-09 07:42:32 -08:00
arobertn
bc7719ecdb
Pass natural/integer preference args to openapi-to-dhall (#178) 2022-01-13 17:10:10 -08:00
Gabriella Gonzalez
49d1d68d2c
Fix handling of additional properties (#180)
… by pulling in the fix from https://github.com/dhall-lang/dhall-haskell/pull/2343
2021-12-03 09:19:20 -08:00
Gabriel Gonzalez
058e24fb5f
Update top-level README and examples (#164)
Currently CI does not enforce that they stay
in sync with the `1.17/` package, so I had to
explicitly run the `generate.sh` script to update
them.  I will follow up with another change to
automate this check.
2021-03-18 11:25:57 -07:00
Will Sewell
2b6210de20
Update dhall-openapi and regenerate (#162)
Includes changes from https://github.com/dhall-lang/dhall-haskell/pull/2126
and https://github.com/dhall-lang/dhall-haskell/pull/2137.
2021-01-17 12:21:24 +00:00
Will Sewell
079178f537
Update dhall-openapi (#158)
* Fetch latest versions of kubernetes

* Update dhall-openapi and regenerate
2021-01-15 09:10:08 -08:00
Gabriel Gonzalez
ad3369f9f9
Fix PersistentVolumeClaim (#144)
Fixes https://github.com/dhall-lang/dhall-kubernetes/issues/136
2020-09-07 21:30:28 -07:00
Gabriel Gonzalez
170c6e86fc
Fix top-level examples (#129) 2020-07-14 07:51:57 -07:00
Gabriel Gonzalez
fc275e649b
Make ObjectMeta's name field optional (#115)
Supersedes https://github.com/dhall-lang/dhall-kubernetes/pull/85
2020-04-24 12:46:00 -07:00
Gabriel Gonzalez
381306bcc3
Go back to using --omitNull instead of --omitEmpty (#110)
Fixes https://github.com/dhall-lang/dhall-kubernetes/issues/86

The motivation of this is to more accurately model the Kubernetes
API semantics by not auto-omitting empty fields.  This is because
a field set to `Some ([] : List T)` is not necessarily the same
as `None (List T)`.

This makes the typical case a bit more verbose (more `Some`s), but
the difference to the `./examples` shows that it's not too bad.
2020-01-31 06:52:20 -08:00
Gabriel Gonzalez
3e160f4a27
Upgrade to dhall-1.29.0 (#109)
The main motivation for the upgrade is to take advantage of the
improved formatting for example code
2020-01-30 07:23:13 -08:00
Gabriel Gonzalez
90c1eb8851
Minimize unnecessary rebuilds (#105)
This improves the granularity of the Nix build graph in order to minimize
unnecessary rebuilds.

This also fixed several bugs in the package generation along the way, so
this change includes those fixes.
2020-01-14 07:35:36 -08:00
Gabriel Gonzalez
a8ffffc4cb
Generate Dhall schemas for multiple Kubernetes versions (#104)
Fixes https://github.com/dhall-lang/dhall-kubernetes/issues/75

This also changes the default version to the latest version to 1.17 since now
users can access older versions
2020-01-12 15:00:56 -08:00
Gabriel Gonzalez
eb001e6683
Groundwork for supporting multiple releases (#103)
Related to https://github.com/dhall-lang/dhall-kubernetes/issues/75

This generalizes the machinery for fetching the Kubernetes OpenAPI spec to
support fetching multiple versions.  In particular, the Kubernetes version
is no longer tied to the version of Nixpkgs that we use.
2020-01-10 21:40:36 -08:00
Gabriel Gonzalez
ddc42e6109
Change algorithm for prioritizing duplicate resources (#101)
Now we place a higher priority on production/beta/alpha than we do on v2/v1

... as requested by @amarrella
2020-01-08 07:52:07 -08:00
Gabriel Gonzalez
1c6397ccde
Improve coverage for ./scripts/generate.sh (#100)
`./scripts/generate.sh` will now also auto-update the
`./examples/*.dhall` files and `./package.dhall`, too
2020-01-07 18:29:56 -08:00
Gabriel Gonzalez
89e7c8ed0b
Automate exclusion of duplicate resources (#99)
Related to https://github.com/dhall-lang/dhall-kubernetes/issues/75

In order to support multiple versions of the Kubernetes API we need to begin
automating the process of excluding duplicate resources (otherwise the
maintenance burden would be far too high).  This change adds new support
for automatically preferring Kubernetes resources by version where:

* v2 is prioritized over v1
* production is prioritized over beta, which is prioritized over alpha

Note that even when prioritizing by version there are still a few cases of
duplicates.  For now we use the default behavior of `Data.List.maximumBy`
to select the last resource if there are still conflicts.  This leads to
a few differences in which resources are preferred when such a conflict
arises (where previously we were just guessing manually which one to pick).
2020-01-03 08:51:05 -08:00
Greg Ziegan
4ab28225a1 Update Kubernetes API and expose TypesUnion in package.dhall 2019-12-14 08:10:02 -08:00
Ari Becker
bbfec3d854 Add package.dhall (#95)
* Add a `package.dhall` file, which re-exports `schemas.dhall` and adds
`IntOrString`. The expected hash of `package.dhall` is currently:
sha256:3ea8628b704704de295261dfc7626c15247c589c10a266f970cade262543fdda

* Update documentation and examples to clarify that expected usage is
through the `package.dhall` file.

* README.md cleanup: Update tutorial reference URL to the latest `1.28`
release of `dhall-haskell`, and change code language hints from
`haskell` to `dhall`.
2019-12-07 13:41:54 -08:00
Greg Ziegan
7af2ab5345 Prefer "schema" syntax for examples (#93)
* Also update to the latest version of `dhall`
* Also fix `./scripts/generate.sh` to generate the `schemas*` files
2019-11-23 16:53:03 -08:00
Gabriel Gonzalez
fee24c0993
Add dhall-kubernetes support for "schemas" (#84)
For lack of a better term, I'm calling the `{ Type = …, default = … }`
record that the record completion operator expects a "schema".  This
change adds `dhall-kubernetes` support for auto-generating these schemas
for ease of use with the new `::` operator.

See the included example for how this would be used
2019-11-18 08:22:19 -08:00
James Guthrie
2fb32a453c Set Cron* types and defaults to v1beta1 (#88)
According to the Kubernetes documentation [1]:

Note: CronJob resource in batch/v2alpha1 API group has been deprecated
starting from cluster version 1.8. You should switch to using
batch/v1beta1, instead, which is enabled by default in the API server.
Examples in this document use batch/v1beta1 in all examples.

[1]: https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/
2019-11-16 18:18:44 -08:00
Fabrizio Ferrai
4ad58156b7
Update to Kubernetes 1.14.3 (#72) 2019-07-30 10:25:00 +03:00
Fabrizio Ferrai
805b432df2
API v2 (#57)
This ports the conversion script from Python to Haskell (fix #7)

The main reasons for this port are that:
- the Python script was really hard to maintain for reasons like 
  "converting from Swagger to Dhall is interleaved with string formatting"
- in Haskell we can use the dhall library to generate always syntactically 
  correct Dhall AST. It's also much easier to keep an eye on correctness, 
  because types and pattern matching. It also forces us to deal with things
  like cyclic imports from the get go.

Things happening here:
- remove the `api` folder, removing the difference between "raw api" and "nice api"
- move defaults from `default` to `defaults` folder, as it is in `dhall-nethack`
- transition to the new syntax for `Optional` (fix #49)
- add `types.dhall` and `defaults.dhall`, so that one can now easily "pin a version"
  by just importing these two records at a specific commit/tag. They also make it really
  easy to access objects, e.g.
  `let types = https://raw.githubusercontent... sha256:... in types.Deployment`
- also add typesUnion.dhall (fix #54), so one is able to send to Kubernetes different
  objects in the same stream. This is also documented in the README
- defaults are resolved recursively (fix #46): if there's an import of a "nullable" record,
  then it's not marked as Optional, making merging objects much easier
- default objects are not lambdas anymore, and instead they just don't include the required
  fields (that is, the ones that are not nullable records), as suggested in dhall-lang/dhall-lang#382
- for objects that are simple types we used to generate a simple lambda
  `\(a : Text) -> a` as a default, now we just don't generate a default (e.g. see
  `io.k8s.apimachinery.pkg.apis.meta.v1.Time`)
- autoformat all generated Dhall code
- remove cyclic imports (fix #47)
- update to dhall-1.22 and dhall-json-1.2.8
2019-05-01 19:13:18 +03:00
Fabrizio Ferrai
423db8a8bb
Centralize Prelude import (#51)
Import the Prelude only in one place, so it's cached and easily overridable
2019-03-25 12:20:27 +02:00
Fabrizio Ferrai
ced5c10af3
Update to Dhall v5.0.0: deprecate constructors keyword (#45) 2019-01-21 08:49:34 +02:00
Fabrizio Ferrai
0691ba0078 Fix accidental tabs in examples 2018-11-12 19:24:18 +01:00
Simon Hafner
b98223e2a6 Upgrade to dhall version v3.0.0 (#36) 2018-11-12 18:37:55 +01:00
Fabrizio Ferrai
f8be1d55bc
Add high level API (#34)
This adds a high level API (+ tests) for:
- Deployment.v1
- Service.v1
2018-09-13 13:33:48 +03:00
Fabrizio Ferrai
4fec2167a8
Support 'format' key from the swagger schema (#28)
Fix #12 by introducing a `< Int : Natural | String : Text >` Union for the "int-or-string" format key.
2018-08-06 17:13:33 +02:00
Thomas Scholtes
4a7f02cd0d Extract and check examples (#27)
* We move all the example code from the readme to the `examples` folder.
* We provide a `scripts/build-readme.sh` script that inlines referenced
  examples in `README.md.in` and outputs `README.md`. The script also
  verifies that the output readme is the same as in version control.
* We provide a `scripts/build-examples.py` script that builds the Yaml
  output for all examples. The script also verifies that the generated
  Yaml files are the same as in version control.
2018-08-03 16:24:32 +02:00