Commit Graph

94 Commits

Author SHA1 Message Date
Gabriel Gonzalez
ac4b0d1aeb Remove dependence on kubernetes-client-core 2020-01-09 20:47:56 -08:00
Gabriel Gonzalez
7d033a8bc6
Merge branch 'master' into crd 2020-01-09 19:37:53 -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
Alessandro Marrella
b26cf808f1
Merge pull request #5 from dhall-lang/gabriel/crd_2
Merge `master` into `crd` branch
2020-01-06 09:30:58 +00:00
Gabriel Gonzalez
8956f010ee Merge branch 'master' into EarnestResearch-crd 2020-01-04 07:55:02 -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
Alessandro Marrella
b5bdb4f914
Merge pull request #4 from dhall-lang/gabriel/crd
Fix Nix build
2019-12-22 19:54:21 +01:00
Gabriel Gonzalez
b8917ac262 Fix Nix build
In the process of fixing the build I cleaned up `nix/nixpkgs.nix`
to use `pkgs.haskell.lib.packageSourceOverrides` to make it easier for
people less familiar with Nix to contribute.

This also required bumping `nix/nixpkgs.json` since `cabal2nix` failed
to build for the revision we were previously using.  Fortunately, this
did not entail any changes to the Kubernetes OpenAPI spec since it
didn't change since the last Nixpkgs revision.
2019-12-20 10:49:59 -08:00
Alessandro Marrella
7670b516c8
Replace error with fail 2019-12-16 10:30:04 +00:00
Gabriel Gonzalez
02328e146b
Merge branch 'master' into crd 2019-12-14 08:23:14 -08:00
Greg Ziegan
4ab28225a1 Update Kubernetes API and expose TypesUnion in package.dhall 2019-12-14 08:10:02 -08:00
Alessandro Marrella
a60ef810b2
Handle case where version is specifyed in the new versions field 2019-12-12 13:56:00 +00:00
Alessandro Marrella
a57ac535a4
Add objectmeta 2019-12-12 13:30:13 +00:00
Alessandro Marrella
72bc31ef6e
Add nix dependencies 2019-12-12 13:15:56 +00:00
Alessandro Marrella
a70334e45c
Add apiVersion and kind 2019-12-12 13:15:43 +00:00
Alessandro Marrella
f8d92a8e41
Implement generator from CustomResourceDefinition 2019-12-12 12:27:48 +00:00
Hunter Kelly
337a81fa8b Generator Improvements (#92)
* Add --skipDuplicates CLI flag and handler

* Add prefixMap option for specifying external import roots
2019-12-11 05:41:24 -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
Alessandro Marrella
14ef113368 Add EarnestResearch/dhall-packages to the users (#89)
We are happy users of dhall and dhall-kubernetes and we opensourced our bindings, I'm proposing to add them here for better discovery :)
2019-11-16 18:06:58 -08:00
Simon Jakobi
dea2c92017
Update Prelude.dhall to v10.0.0 (#80)
Now all the examples will build again with current versions
of dhall.
2019-09-16 18:52:23 +02:00
Fabrizio Ferrai
4ad58156b7
Update to Kubernetes 1.14.3 (#72) 2019-07-30 10:25:00 +03:00
Alessandro Marrella
f3d759009f Modify Kubernetes generator to support more cases (#69)
* Adjust dhall-kubernetes-generator to handle different swagger specs
2019-07-12 11:49:49 +03:00
Andrew DeMaria
fef6b2328b Show kind for error message (#66)
In the case that an older kubernetes openapi is used, some of the
excluded models for newer versions will cause a necessary object for the
older kubernetes version to be filtered. In this case, showing the Kind
is helpful for debugging.
2019-06-10 08:06:30 +03:00
Fabrizio Ferrai
8afa82f0c7
Switch to native GitHub highlighting 2019-06-07 15:16:43 +03:00
Fabrizio Ferrai
fad3589782
Update to latest Dhall version (#65) 2019-05-13 18:05:56 +03:00
Robbie McMichael
d2edbe2104 Set syntax highlighting for Dhall files (#63) 2019-05-07 18:10:26 +03:00
Fabrizio Ferrai
16a4eabbd5
Add link to stack website (#61) 2019-05-02 10:29:02 +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
James Griffiths
5d11c98b86 Update Dhall version in readme (#60) 2019-04-18 09:56:33 +03:00
Fabrizio Ferrai
69c85131d1 Add logo to README (#59) 2019-04-02 11:53:33 +02:00
Arian van Putten
a670cd1fee
Add logo (#58) 2019-03-31 15:24:48 +02:00
Arian van Putten
8d295ecedc
Nixify the build (#55)
This makes our build reproducible and consistent

* Disables dhall tests. They don't build in sandbox mode because they require network access
* Moves all scripts to ./scripts folder for consistency
* Moves all nix files to ./nix folder for consistency, except for release.nix which Hydra needs
* Changes convert.py to take the K8s swagger spec as an argument
* Get k8s swagger spec from nixpkgs
* Get dhall prelude from nixpkgs
* added an ./scripts/update-nixpkgs.sh script to easily update to a new version of nixpkgs
2019-03-30 11:05:29 +01:00
Fabrizio Ferrai
f860c4e2a4
Upgrade to Kubernetes 0.13.4 (#53) 2019-03-25 12:32:48 +02: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
Ari Becker
047e56a442 Add "Projects Using" section to the docs, with dhall-prometheus-operator (#52) 2019-03-25 11:15:20 +02:00
Fabrizio Ferrai
ced5c10af3
Update to Dhall v5.0.0: deprecate constructors keyword (#45) 2019-01-21 08:49:34 +02:00
Gabriel Gonzalez
272c10efc4
Further simplify instructions for building locally (#43) 2019-01-02 00:49:30 -06:00
Gabriel Gonzalez
ee0c74c79f
Provide default value for src in ./release.nix (#42)
This simplifies local testing
2019-01-02 00:03:04 -06:00
Jan van Brügge
4a904b4688 Do not require apiVersion for ObjectFieldSelector (#40) 2018-12-03 10:37:49 +01:00
Fabrizio Ferrai
0691ba0078 Fix accidental tabs in examples 2018-11-12 19:24:18 +01:00
Fabrizio Ferrai
ad3eff2c7e Unskip tests for some now-passing generated files 2018-11-12 19:20:58 +01:00
Fabrizio Ferrai
f88ad18bcc Update README notice about minimum Dhall version 2018-11-12 19:19:06 +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
11a986ae11
Fix #32: include the git revision in the Hydra build (#33) 2018-09-04 11:11:40 +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