├── users ├── README.md ├── .dockerignore ├── pkg │ └── models │ │ └── models.go ├── .gitignore ├── cmd │ └── app │ │ ├── routes.go │ │ └── helpers.go ├── go.mod └── Dockerfile ├── website ├── ui │ ├── static │ │ ├── index.html │ │ └── css │ │ │ └── cinema.css │ └── html │ │ ├── .DS_Store │ │ ├── footer.partial.tmpl │ │ ├── home.page.tmpl │ │ ├── users │ │ ├── view.page.tmpl │ │ └── list.page.tmpl │ │ ├── movies │ │ ├── list.page.tmpl │ │ └── view.page.tmpl │ │ ├── showtimes │ │ ├── list.page.tmpl │ │ └── view.page.tmpl │ │ └── bookings │ │ ├── list.page.tmpl │ │ └── view.page.tmpl ├── .dockerignore ├── .gitignore ├── go.mod ├── cmd │ └── web │ │ ├── routes.go │ │ └── handlers.go └── Dockerfile ├── timoni ├── api │ ├── README.md │ ├── cue.mod │ │ ├── module.cue │ │ ├── gen │ │ │ └── k8s.io │ │ │ │ ├── api │ │ │ │ ├── apps │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── core │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ │ └── well_known_taints_go_gen.cue │ │ │ │ ├── batch │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── node │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── policy │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ └── doc_go_gen.cue │ │ │ │ ├── events │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── storage │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── admission │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── autoscaling │ │ │ │ │ ├── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ │ └── v2 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── discovery │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ └── well_known_labels_go_gen.cue │ │ │ │ ├── networking │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ └── well_known_annotations_go_gen.cue │ │ │ │ ├── rbac │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── scheduling │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── authorization │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── certificates │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── coordination │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── authentication │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ └── admissionregistration │ │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ └── doc_go_gen.cue │ │ │ │ ├── apimachinery │ │ │ │ └── pkg │ │ │ │ │ ├── runtime │ │ │ │ │ ├── embedded_go_gen.cue │ │ │ │ │ ├── types_proto_go_gen.cue │ │ │ │ │ ├── conversion_go_gen.cue │ │ │ │ │ ├── allocator_go_gen.cue │ │ │ │ │ ├── converter_go_gen.cue │ │ │ │ │ ├── negotiate_go_gen.cue │ │ │ │ │ ├── swagger_doc_generator_go_gen.cue │ │ │ │ │ ├── splice_go_gen.cue │ │ │ │ │ ├── helper_go_gen.cue │ │ │ │ │ ├── codec_go_gen.cue │ │ │ │ │ └── doc_go_gen.cue │ │ │ │ │ ├── types │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ ├── namespacedname_go_gen.cue │ │ │ │ │ ├── uid_go_gen.cue │ │ │ │ │ ├── patch_go_gen.cue │ │ │ │ │ └── nodename_go_gen.cue │ │ │ │ │ ├── apis │ │ │ │ │ └── meta │ │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ ├── duration_go_gen.cue │ │ │ │ │ │ ├── micro_time_go_gen.cue │ │ │ │ │ │ ├── time_go_gen.cue │ │ │ │ │ │ ├── time_proto_go_gen.cue │ │ │ │ │ │ ├── watch_go_gen.cue │ │ │ │ │ │ └── meta_go_gen.cue │ │ │ │ │ ├── watch │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ ├── filter_go_gen.cue │ │ │ │ │ ├── streamwatcher_go_gen.cue │ │ │ │ │ ├── mux_go_gen.cue │ │ │ │ │ └── watch_go_gen.cue │ │ │ │ │ ├── api │ │ │ │ │ └── resource │ │ │ │ │ │ ├── suffix_go_gen.cue │ │ │ │ │ │ ├── math_go_gen.cue │ │ │ │ │ │ └── amount_go_gen.cue │ │ │ │ │ └── util │ │ │ │ │ └── intstr │ │ │ │ │ └── intstr_go_gen.cue │ │ │ │ └── apiextensions-apiserver │ │ │ │ └── pkg │ │ │ │ └── apis │ │ │ │ └── apiextensions │ │ │ │ └── v1 │ │ │ │ ├── doc_go_gen.cue │ │ │ │ └── register_go_gen.cue │ │ └── pkg │ │ │ └── timoni.sh │ │ │ └── core │ │ │ └── v1alpha1 │ │ │ ├── action.cue │ │ │ ├── selector.cue │ │ │ └── image.cue │ ├── timoni.ignore │ ├── templates │ │ ├── serviceaccount.cue │ │ ├── service.cue │ │ └── config.cue │ ├── debug_values.cue │ ├── debug_tool.cue │ ├── values.cue │ └── timoni.cue ├── website │ ├── README.md │ ├── cue.mod │ │ ├── module.cue │ │ ├── gen │ │ │ └── k8s.io │ │ │ │ ├── api │ │ │ │ ├── core │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ │ └── well_known_taints_go_gen.cue │ │ │ │ ├── apps │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── batch │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── policy │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ └── doc_go_gen.cue │ │ │ │ ├── node │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── events │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── storage │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── autoscaling │ │ │ │ │ ├── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ │ └── v2 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── rbac │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── admission │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── discovery │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ └── well_known_labels_go_gen.cue │ │ │ │ ├── networking │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ └── well_known_annotations_go_gen.cue │ │ │ │ ├── scheduling │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── certificates │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── coordination │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── authorization │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ ├── authentication │ │ │ │ │ └── v1 │ │ │ │ │ │ └── register_go_gen.cue │ │ │ │ └── admissionregistration │ │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ └── doc_go_gen.cue │ │ │ │ ├── apimachinery │ │ │ │ └── pkg │ │ │ │ │ ├── runtime │ │ │ │ │ ├── embedded_go_gen.cue │ │ │ │ │ ├── types_proto_go_gen.cue │ │ │ │ │ ├── conversion_go_gen.cue │ │ │ │ │ ├── allocator_go_gen.cue │ │ │ │ │ ├── converter_go_gen.cue │ │ │ │ │ ├── negotiate_go_gen.cue │ │ │ │ │ ├── swagger_doc_generator_go_gen.cue │ │ │ │ │ ├── splice_go_gen.cue │ │ │ │ │ ├── helper_go_gen.cue │ │ │ │ │ ├── codec_go_gen.cue │ │ │ │ │ └── doc_go_gen.cue │ │ │ │ │ ├── types │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ ├── namespacedname_go_gen.cue │ │ │ │ │ ├── uid_go_gen.cue │ │ │ │ │ ├── patch_go_gen.cue │ │ │ │ │ └── nodename_go_gen.cue │ │ │ │ │ ├── apis │ │ │ │ │ └── meta │ │ │ │ │ │ └── v1 │ │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ │ ├── duration_go_gen.cue │ │ │ │ │ │ ├── micro_time_go_gen.cue │ │ │ │ │ │ ├── time_go_gen.cue │ │ │ │ │ │ ├── time_proto_go_gen.cue │ │ │ │ │ │ ├── watch_go_gen.cue │ │ │ │ │ │ └── meta_go_gen.cue │ │ │ │ │ ├── watch │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ ├── filter_go_gen.cue │ │ │ │ │ ├── streamwatcher_go_gen.cue │ │ │ │ │ ├── mux_go_gen.cue │ │ │ │ │ └── watch_go_gen.cue │ │ │ │ │ ├── api │ │ │ │ │ └── resource │ │ │ │ │ │ ├── suffix_go_gen.cue │ │ │ │ │ │ ├── math_go_gen.cue │ │ │ │ │ │ └── amount_go_gen.cue │ │ │ │ │ └── util │ │ │ │ │ └── intstr │ │ │ │ │ └── intstr_go_gen.cue │ │ │ │ └── apiextensions-apiserver │ │ │ │ └── pkg │ │ │ │ └── apis │ │ │ │ └── apiextensions │ │ │ │ └── v1 │ │ │ │ ├── doc_go_gen.cue │ │ │ │ └── register_go_gen.cue │ │ └── pkg │ │ │ └── timoni.sh │ │ │ └── core │ │ │ └── v1alpha1 │ │ │ ├── action.cue │ │ │ ├── selector.cue │ │ │ └── image.cue │ ├── timoni.ignore │ ├── templates │ │ ├── serviceaccount.cue │ │ ├── service.cue │ │ └── ingress.cue │ ├── values.cue │ ├── debug_values.cue │ ├── debug_tool.cue │ └── timoni.cue └── mongodb │ ├── README.md │ ├── cue.mod │ ├── module.cue │ ├── gen │ │ └── k8s.io │ │ │ ├── api │ │ │ ├── core │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ ├── doc_go_gen.cue │ │ │ │ │ └── well_known_taints_go_gen.cue │ │ │ ├── apps │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── batch │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── policy │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ └── doc_go_gen.cue │ │ │ ├── node │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── events │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── storage │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── autoscaling │ │ │ │ ├── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ │ └── v2 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── rbac │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── admission │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── discovery │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ └── well_known_labels_go_gen.cue │ │ │ ├── networking │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ └── well_known_annotations_go_gen.cue │ │ │ ├── scheduling │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── certificates │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── coordination │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── authorization │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ ├── authentication │ │ │ │ └── v1 │ │ │ │ │ └── register_go_gen.cue │ │ │ └── admissionregistration │ │ │ │ └── v1 │ │ │ │ ├── register_go_gen.cue │ │ │ │ └── doc_go_gen.cue │ │ │ ├── apimachinery │ │ │ └── pkg │ │ │ │ ├── runtime │ │ │ │ ├── embedded_go_gen.cue │ │ │ │ ├── types_proto_go_gen.cue │ │ │ │ ├── conversion_go_gen.cue │ │ │ │ ├── allocator_go_gen.cue │ │ │ │ ├── converter_go_gen.cue │ │ │ │ ├── negotiate_go_gen.cue │ │ │ │ ├── swagger_doc_generator_go_gen.cue │ │ │ │ ├── splice_go_gen.cue │ │ │ │ ├── helper_go_gen.cue │ │ │ │ ├── codec_go_gen.cue │ │ │ │ └── doc_go_gen.cue │ │ │ │ ├── types │ │ │ │ ├── doc_go_gen.cue │ │ │ │ ├── namespacedname_go_gen.cue │ │ │ │ ├── uid_go_gen.cue │ │ │ │ ├── patch_go_gen.cue │ │ │ │ └── nodename_go_gen.cue │ │ │ │ ├── apis │ │ │ │ └── meta │ │ │ │ │ └── v1 │ │ │ │ │ ├── register_go_gen.cue │ │ │ │ │ ├── duration_go_gen.cue │ │ │ │ │ ├── micro_time_go_gen.cue │ │ │ │ │ ├── time_go_gen.cue │ │ │ │ │ ├── time_proto_go_gen.cue │ │ │ │ │ ├── watch_go_gen.cue │ │ │ │ │ └── meta_go_gen.cue │ │ │ │ ├── watch │ │ │ │ ├── doc_go_gen.cue │ │ │ │ ├── filter_go_gen.cue │ │ │ │ ├── streamwatcher_go_gen.cue │ │ │ │ ├── mux_go_gen.cue │ │ │ │ └── watch_go_gen.cue │ │ │ │ ├── api │ │ │ │ └── resource │ │ │ │ │ ├── suffix_go_gen.cue │ │ │ │ │ ├── math_go_gen.cue │ │ │ │ │ └── amount_go_gen.cue │ │ │ │ └── util │ │ │ │ └── intstr │ │ │ │ └── intstr_go_gen.cue │ │ │ └── apiextensions-apiserver │ │ │ └── pkg │ │ │ └── apis │ │ │ └── apiextensions │ │ │ └── v1 │ │ │ ├── doc_go_gen.cue │ │ │ └── register_go_gen.cue │ └── pkg │ │ └── timoni.sh │ │ └── core │ │ └── v1alpha1 │ │ ├── action.cue │ │ ├── selector.cue │ │ └── image.cue │ ├── timoni.ignore │ ├── templates │ ├── serviceaccount.cue │ ├── service.cue │ └── config.cue │ ├── values.cue │ ├── debug_values.cue │ ├── debug_tool.cue │ └── timoni.cue ├── movies ├── .dockerignore ├── .gitignore ├── cmd │ └── app │ │ ├── routes.go │ │ └── helpers.go ├── pkg │ └── models │ │ └── models.go ├── go.mod └── Dockerfile ├── bookings ├── .dockerignore ├── pkg │ └── models │ │ └── models.go ├── .gitignore ├── cmd │ └── app │ │ ├── routes.go │ │ └── helpers.go ├── go.mod └── Dockerfile ├── showtimes ├── .dockerignore ├── .gitignore ├── pkg │ └── models │ │ └── models.go ├── cmd │ └── app │ │ ├── helpers.go │ │ └── routes.go ├── go.mod └── Dockerfile ├── docs ├── images │ ├── .DS_Store │ ├── overview.jpg │ ├── website-home.jpg │ ├── website-users.jpg │ └── traefik-dashboard.jpg └── endpoints.md ├── backup └── cinema │ ├── users │ ├── users.bson.gz │ └── users.metadata.json.gz │ ├── movies │ ├── movies.bson.gz │ └── movies.metadata.json.gz │ ├── bookings │ ├── bookings.bson.gz │ └── bookings.metadata.json.gz │ └── showtimes │ ├── showtimes.bson.gz │ └── showtimes.metadata.json.gz ├── charts └── cinema │ ├── charts │ ├── users │ │ ├── Chart.yaml │ │ └── templates │ │ │ ├── serviceaccount.yaml │ │ │ ├── service.yaml │ │ │ ├── tests │ │ │ └── test-connection.yaml │ │ │ ├── hpa.yaml │ │ │ ├── ingress.yaml │ │ │ └── NOTES.txt │ ├── movies │ │ ├── Chart.yaml │ │ └── templates │ │ │ ├── serviceaccount.yaml │ │ │ ├── service.yaml │ │ │ ├── tests │ │ │ └── test-connection.yaml │ │ │ ├── hpa.yaml │ │ │ ├── ingress.yaml │ │ │ └── NOTES.txt │ ├── website │ │ ├── Chart.yaml │ │ └── templates │ │ │ ├── serviceaccount.yaml │ │ │ ├── service.yaml │ │ │ ├── tests │ │ │ └── test-connection.yaml │ │ │ ├── hpa.yaml │ │ │ ├── ingress.yaml │ │ │ └── NOTES.txt │ ├── bookings │ │ ├── Chart.yaml │ │ └── templates │ │ │ ├── serviceaccount.yaml │ │ │ ├── service.yaml │ │ │ ├── tests │ │ │ └── test-connection.yaml │ │ │ ├── hpa.yaml │ │ │ └── ingress.yaml │ └── showtimes │ │ ├── Chart.yaml │ │ └── templates │ │ ├── serviceaccount.yaml │ │ ├── service.yaml │ │ ├── tests │ │ └── test-connection.yaml │ │ ├── hpa.yaml │ │ └── ingress.yaml │ ├── Chart.lock │ ├── Chart.yaml │ └── values.yaml └── .github └── workflows └── close-inactive-issues.yml /users/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/ui/static/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /timoni/api/README.md: -------------------------------------------------------------------------------- 1 | # api 2 | -------------------------------------------------------------------------------- /timoni/website/README.md: -------------------------------------------------------------------------------- 1 | # website 2 | -------------------------------------------------------------------------------- /timoni/mongodb/README.md: -------------------------------------------------------------------------------- 1 | # mongodb 2 | 3 | -------------------------------------------------------------------------------- /website/.dockerignore: -------------------------------------------------------------------------------- 1 | # Git repo 2 | .git -------------------------------------------------------------------------------- /timoni/api/cue.mod/module.cue: -------------------------------------------------------------------------------- 1 | module: "timoni.sh/api" 2 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/module.cue: -------------------------------------------------------------------------------- 1 | module: "timoni.sh/mongodb" 2 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/module.cue: -------------------------------------------------------------------------------- 1 | module: "timoni.sh/website" 2 | -------------------------------------------------------------------------------- /movies/.dockerignore: -------------------------------------------------------------------------------- 1 | # Helm chart folder 2 | chart 3 | 4 | # Git repo 5 | .git -------------------------------------------------------------------------------- /users/.dockerignore: -------------------------------------------------------------------------------- 1 | # Helm chart folder 2 | chart 3 | 4 | # Git repo 5 | .git -------------------------------------------------------------------------------- /website/ui/static/css/cinema.css: -------------------------------------------------------------------------------- 1 | .jumbotron { 2 | margin-bottom: 0; 3 | } -------------------------------------------------------------------------------- /bookings/.dockerignore: -------------------------------------------------------------------------------- 1 | # Helm chart folder 2 | chart 3 | 4 | # Git repo 5 | .git -------------------------------------------------------------------------------- /showtimes/.dockerignore: -------------------------------------------------------------------------------- 1 | # Helm chart folder 2 | chart 3 | 4 | # Git repo 5 | .git -------------------------------------------------------------------------------- /docs/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/docs/images/.DS_Store -------------------------------------------------------------------------------- /docs/images/overview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/docs/images/overview.jpg -------------------------------------------------------------------------------- /website/ui/html/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/website/ui/html/.DS_Store -------------------------------------------------------------------------------- /docs/images/website-home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/docs/images/website-home.jpg -------------------------------------------------------------------------------- /docs/images/website-users.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/docs/images/website-users.jpg -------------------------------------------------------------------------------- /backup/cinema/users/users.bson.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/users/users.bson.gz -------------------------------------------------------------------------------- /docs/images/traefik-dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/docs/images/traefik-dashboard.jpg -------------------------------------------------------------------------------- /backup/cinema/movies/movies.bson.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/movies/movies.bson.gz -------------------------------------------------------------------------------- /backup/cinema/bookings/bookings.bson.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/bookings/bookings.bson.gz -------------------------------------------------------------------------------- /backup/cinema/showtimes/showtimes.bson.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/showtimes/showtimes.bson.gz -------------------------------------------------------------------------------- /backup/cinema/users/users.metadata.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/users/users.metadata.json.gz -------------------------------------------------------------------------------- /backup/cinema/movies/movies.metadata.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/movies/movies.metadata.json.gz -------------------------------------------------------------------------------- /backup/cinema/bookings/bookings.metadata.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/bookings/bookings.metadata.json.gz -------------------------------------------------------------------------------- /backup/cinema/showtimes/showtimes.metadata.json.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mmorejon/microservices-docker-go-mongodb/HEAD/backup/cinema/showtimes/showtimes.metadata.json.gz -------------------------------------------------------------------------------- /charts/cinema/charts/users/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: users 3 | description: A Helm chart for Kubernetes 4 | type: application 5 | version: 0.2.2 6 | appVersion: "v2.2.2" 7 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: movies 3 | description: A Helm chart for Kubernetes 4 | type: application 5 | version: 0.2.2 6 | appVersion: "v2.2.2" 7 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: website 3 | description: A Helm chart for Kubernetes 4 | type: application 5 | version: 0.2.2 6 | appVersion: "v2.2.2" 7 | -------------------------------------------------------------------------------- /charts/cinema/charts/bookings/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: bookings 3 | description: A Helm chart for Kubernetes 4 | type: application 5 | version: 0.2.2 6 | appVersion: "v2.2.2" 7 | -------------------------------------------------------------------------------- /charts/cinema/charts/showtimes/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: showtimes 3 | description: A Helm chart for Kubernetes 4 | type: application 5 | version: 0.2.2 6 | appVersion: "v2.2.2" 7 | -------------------------------------------------------------------------------- /timoni/api/timoni.ignore: -------------------------------------------------------------------------------- 1 | # VCS 2 | .git/ 3 | .gitignore 4 | .gitmodules 5 | .gitattributes 6 | 7 | # Go 8 | vendor/ 9 | go.mod 10 | go.sum 11 | 12 | # CUE 13 | *_tool.cue 14 | debug_values.cue 15 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/apps/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/apps/v1 4 | 5 | package v1 6 | 7 | #GroupName: "apps" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/core/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | package v1 6 | 7 | #GroupName: "" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/core/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | package v1 6 | 7 | #GroupName: "" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/timoni.ignore: -------------------------------------------------------------------------------- 1 | # VCS 2 | .git/ 3 | .gitignore 4 | .gitmodules 5 | .gitattributes 6 | 7 | # Go 8 | vendor/ 9 | go.mod 10 | go.sum 11 | 12 | # CUE 13 | *_tool.cue 14 | debug_values.cue 15 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/core/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | package v1 6 | 7 | #GroupName: "" 8 | -------------------------------------------------------------------------------- /timoni/website/timoni.ignore: -------------------------------------------------------------------------------- 1 | # VCS 2 | .git/ 3 | .gitignore 4 | .gitmodules 5 | .gitattributes 6 | 7 | # Go 8 | vendor/ 9 | go.mod 10 | go.sum 11 | 12 | # CUE 13 | *_tool.cue 14 | debug_values.cue 15 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/batch/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/batch/v1 4 | 5 | package v1 6 | 7 | #GroupName: "batch" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/apps/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/apps/v1 4 | 5 | package v1 6 | 7 | #GroupName: "apps" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/apps/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/apps/v1 4 | 5 | package v1 6 | 7 | #GroupName: "apps" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/node/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/node/v1 4 | 5 | package v1 6 | 7 | #GroupName: "node.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/policy/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/policy/v1 4 | 5 | package v1 6 | 7 | #GroupName: "policy" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/batch/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/batch/v1 4 | 5 | package v1 6 | 7 | #GroupName: "batch" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/policy/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/policy/v1 4 | 5 | package v1 6 | 7 | #GroupName: "policy" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/batch/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/batch/v1 4 | 5 | package v1 6 | 7 | #GroupName: "batch" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/policy/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/policy/v1 4 | 5 | package v1 6 | 7 | #GroupName: "policy" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/events/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/events/v1 4 | 5 | package v1 6 | 7 | #GroupName: "events.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/node/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/node/v1 4 | 5 | package v1 6 | 7 | #GroupName: "node.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/node/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/node/v1 4 | 5 | package v1 6 | 7 | #GroupName: "node.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/core/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | // Package v1 is the v1 version of the core API. 6 | package v1 7 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/storage/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/storage/v1 4 | 5 | package v1 6 | 7 | #GroupName: "storage.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/events/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/events/v1 4 | 5 | package v1 6 | 7 | #GroupName: "events.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/storage/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/storage/v1 4 | 5 | package v1 6 | 7 | #GroupName: "storage.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/events/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/events/v1 4 | 5 | package v1 6 | 7 | #GroupName: "events.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/storage/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/storage/v1 4 | 5 | package v1 6 | 7 | #GroupName: "storage.k8s.io" 8 | -------------------------------------------------------------------------------- /website/ui/html/footer.partial.tmpl: -------------------------------------------------------------------------------- 1 | {{define "footer"}} 2 | 7 | {{end}} -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/admission/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admission/v1 4 | 5 | package v1 6 | 7 | #GroupName: "admission.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/autoscaling/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/autoscaling/v1 4 | 5 | package v1 6 | 7 | #GroupName: "autoscaling" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/autoscaling/v2/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/autoscaling/v2 4 | 5 | package v2 6 | 7 | #GroupName: "autoscaling" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/discovery/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/discovery/v1 4 | 5 | package v1 6 | 7 | #GroupName: "discovery.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/networking/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/networking/v1 4 | 5 | package v1 6 | 7 | #GroupName: "networking.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/rbac/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/rbac/v1 4 | 5 | package v1 6 | 7 | #GroupName: "rbac.authorization.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/scheduling/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/scheduling/v1 4 | 5 | package v1 6 | 7 | #GroupName: "scheduling.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/autoscaling/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/autoscaling/v1 4 | 5 | package v1 6 | 7 | #GroupName: "autoscaling" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/autoscaling/v2/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/autoscaling/v2 4 | 5 | package v2 6 | 7 | #GroupName: "autoscaling" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/core/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | // Package v1 is the v1 version of the core API. 6 | package v1 7 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/rbac/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/rbac/v1 4 | 5 | package v1 6 | 7 | #GroupName: "rbac.authorization.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/autoscaling/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/autoscaling/v1 4 | 5 | package v1 6 | 7 | #GroupName: "autoscaling" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/autoscaling/v2/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/autoscaling/v2 4 | 5 | package v2 6 | 7 | #GroupName: "autoscaling" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/core/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | // Package v1 is the v1 version of the core API. 6 | package v1 7 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/rbac/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/rbac/v1 4 | 5 | package v1 6 | 7 | #GroupName: "rbac.authorization.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/embedded_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | _#encodable: _ 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/admission/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admission/v1 4 | 5 | package v1 6 | 7 | #GroupName: "admission.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/discovery/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/discovery/v1 4 | 5 | package v1 6 | 7 | #GroupName: "discovery.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/networking/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/networking/v1 4 | 5 | package v1 6 | 7 | #GroupName: "networking.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/scheduling/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/scheduling/v1 4 | 5 | package v1 6 | 7 | #GroupName: "scheduling.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/admission/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admission/v1 4 | 5 | package v1 6 | 7 | #GroupName: "admission.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/discovery/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/discovery/v1 4 | 5 | package v1 6 | 7 | #GroupName: "discovery.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/networking/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/networking/v1 4 | 5 | package v1 6 | 7 | #GroupName: "networking.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/scheduling/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/scheduling/v1 4 | 5 | package v1 6 | 7 | #GroupName: "scheduling.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/authorization/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/authorization/v1 4 | 5 | package v1 6 | 7 | #GroupName: "authorization.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/certificates/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/certificates/v1 4 | 5 | package v1 6 | 7 | #GroupName: "certificates.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/coordination/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/coordination/v1 4 | 5 | package v1 6 | 7 | #GroupName: "coordination.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/certificates/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/certificates/v1 4 | 5 | package v1 6 | 7 | #GroupName: "certificates.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/coordination/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/coordination/v1 4 | 5 | package v1 6 | 7 | #GroupName: "coordination.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/embedded_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | _#encodable: _ 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/certificates/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/certificates/v1 4 | 5 | package v1 6 | 7 | #GroupName: "certificates.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/coordination/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/coordination/v1 4 | 5 | package v1 6 | 7 | #GroupName: "coordination.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/embedded_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | _#encodable: _ 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/authentication/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/authentication/v1 4 | 5 | package v1 6 | 7 | #GroupName: "authentication.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/authorization/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/authorization/v1 4 | 5 | package v1 6 | 7 | #GroupName: "authorization.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/authorization/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/authorization/v1 4 | 5 | package v1 6 | 7 | #GroupName: "authorization.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/authentication/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/authentication/v1 4 | 5 | package v1 6 | 7 | #GroupName: "authentication.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/authentication/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/authentication/v1 4 | 5 | package v1 6 | 7 | #GroupName: "authentication.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/admissionregistration/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admissionregistration/v1 4 | 5 | package v1 6 | 7 | #GroupName: "admissionregistration.k8s.io" 8 | -------------------------------------------------------------------------------- /website/ui/html/home.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | Select one of the links to consult the information. 8 |
9 |
10 | 11 | {{end}} -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/admissionregistration/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admissionregistration/v1 4 | 5 | package v1 6 | 7 | #GroupName: "admissionregistration.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/admissionregistration/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admissionregistration/v1 4 | 5 | package v1 6 | 7 | #GroupName: "admissionregistration.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/types/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | // Package types implements various generic types used throughout kubernetes. 6 | package types 7 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/types/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | // Package types implements various generic types used throughout kubernetes. 6 | package types 7 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/types/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | // Package types implements various generic types used throughout kubernetes. 6 | package types 7 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/types_proto_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | #ProtobufMarshaller: _ 8 | 9 | #ProtobufReverseMarshaller: _ 10 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 4 | 5 | // Package v1 is the v1 version of the API. 6 | package v1 7 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 4 | 5 | package v1 6 | 7 | #GroupName: "apiextensions.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | #GroupName: "meta.k8s.io" 8 | 9 | #WatchEventKind: "WatchEvent" 10 | -------------------------------------------------------------------------------- /timoni/api/templates/serviceaccount.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | ) 6 | 7 | #ServiceAccount: corev1.#ServiceAccount & { 8 | _config: #Config 9 | apiVersion: "v1" 10 | kind: "ServiceAccount" 11 | metadata: _config.metadata 12 | } 13 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 4 | 5 | // Package v1 is the v1 version of the API. 6 | package v1 7 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/types_proto_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | #ProtobufMarshaller: _ 8 | 9 | #ProtobufReverseMarshaller: _ 10 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 4 | 5 | // Package v1 is the v1 version of the API. 6 | package v1 7 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/types_proto_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | #ProtobufMarshaller: _ 8 | 9 | #ProtobufReverseMarshaller: _ 10 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 4 | 5 | package v1 6 | 7 | #GroupName: "apiextensions.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | #GroupName: "meta.k8s.io" 8 | 9 | #WatchEventKind: "WatchEvent" 10 | -------------------------------------------------------------------------------- /timoni/mongodb/templates/serviceaccount.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | ) 6 | 7 | #ServiceAccount: corev1.#ServiceAccount & { 8 | _config: #Config 9 | apiVersion: "v1" 10 | kind: "ServiceAccount" 11 | metadata: _config.metadata 12 | } 13 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1 4 | 5 | package v1 6 | 7 | #GroupName: "apiextensions.k8s.io" 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/register_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | #GroupName: "meta.k8s.io" 8 | 9 | #WatchEventKind: "WatchEvent" 10 | -------------------------------------------------------------------------------- /timoni/website/templates/serviceaccount.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | ) 6 | 7 | #ServiceAccount: corev1.#ServiceAccount & { 8 | _config: #Config 9 | apiVersion: "v1" 10 | kind: "ServiceAccount" 11 | metadata: _config.metadata 12 | } 13 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/watch/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | // Package watch contains a generic watchable interface, and a fake for 6 | // testing code that uses the watch interface. 7 | package watch 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/watch/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | // Package watch contains a generic watchable interface, and a fake for 6 | // testing code that uses the watch interface. 7 | package watch 8 | -------------------------------------------------------------------------------- /timoni/mongodb/values.cue: -------------------------------------------------------------------------------- 1 | // Code generated by timoni. 2 | // Note that this file must have no imports and all values must be concrete. 3 | 4 | @if(!debug) 5 | 6 | package main 7 | 8 | // Defaults 9 | values: { 10 | image: { 11 | repository: "mongo" 12 | digest: "" 13 | tag: "4.2.23" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/watch/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | // Package watch contains a generic watchable interface, and a fake for 6 | // testing code that uses the watch interface. 7 | package watch 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/suffix_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | _#suffix: string 8 | 9 | // suffixer can interpret and construct suffixes. 10 | _#suffixer: _ 11 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/conversion_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | // Package runtime defines conversions between generic types and structs to map query strings 6 | // to struct objects. 7 | package runtime 8 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/types/namespacedname_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | #NamespacedName: { 8 | Namespace: string 9 | Name: string 10 | } 11 | 12 | #Separator: 47 // '/' 13 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/suffix_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | _#suffix: string 8 | 9 | // suffixer can interpret and construct suffixes. 10 | _#suffixer: _ 11 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/suffix_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | _#suffix: string 8 | 9 | // suffixer can interpret and construct suffixes. 10 | _#suffixer: _ 11 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/conversion_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | // Package runtime defines conversions between generic types and structs to map query strings 6 | // to struct objects. 7 | package runtime 8 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/types/namespacedname_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | #NamespacedName: { 8 | Namespace: string 9 | Name: string 10 | } 11 | 12 | #Separator: 47 // '/' 13 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/conversion_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | // Package runtime defines conversions between generic types and structs to map query strings 6 | // to struct objects. 7 | package runtime 8 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/types/namespacedname_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | #NamespacedName: { 8 | Namespace: string 9 | Name: string 10 | } 11 | 12 | #Separator: 47 // '/' 13 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/watch/filter_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // Recorder records all events that are sent from the watch until it is closed. 8 | #Recorder: { 9 | Interface: #Interface 10 | } 11 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/watch/filter_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // Recorder records all events that are sent from the watch until it is closed. 8 | #Recorder: { 9 | Interface: #Interface 10 | } 11 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/watch/filter_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // Recorder records all events that are sent from the watch until it is closed. 8 | #Recorder: { 9 | Interface: #Interface 10 | } 11 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/policy/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/policy/v1 4 | 5 | // Package policy is for any kind of policy object. Suitable examples, even if 6 | // they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, 7 | // NetworkPolicy, etc. 8 | package v1 9 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/allocator_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // SimpleAllocator a wrapper around make([]byte) 8 | // conforms to the MemoryAllocator interface 9 | #SimpleAllocator: { 10 | } 11 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/policy/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/policy/v1 4 | 5 | // Package policy is for any kind of policy object. Suitable examples, even if 6 | // they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, 7 | // NetworkPolicy, etc. 8 | package v1 9 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/allocator_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // SimpleAllocator a wrapper around make([]byte) 8 | // conforms to the MemoryAllocator interface 9 | #SimpleAllocator: { 10 | } 11 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/policy/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/policy/v1 4 | 5 | // Package policy is for any kind of policy object. Suitable examples, even if 6 | // they aren't all here, are PodDisruptionBudget, PodSecurityPolicy, 7 | // NetworkPolicy, etc. 8 | package v1 9 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/allocator_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // SimpleAllocator a wrapper around make([]byte) 8 | // conforms to the MemoryAllocator interface 9 | #SimpleAllocator: { 10 | } 11 | -------------------------------------------------------------------------------- /users/pkg/models/models.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import "go.mongodb.org/mongo-driver/bson/primitive" 4 | 5 | // User is used to represent user profile data 6 | type User struct { 7 | ID primitive.ObjectID `bson:"_id,omitempty"` 8 | Name string `bson:"name,omitempty"` 9 | LastName string `bson:"lastname,omitempty"` 10 | } 11 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/converter_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // UnstructuredConverter is an interface for converting between interface{} 8 | // and map[string]interface representation. 9 | #UnstructuredConverter: _ 10 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/converter_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // UnstructuredConverter is an interface for converting between interface{} 8 | // and map[string]interface representation. 9 | #UnstructuredConverter: _ 10 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/converter_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // UnstructuredConverter is an interface for converting between interface{} 8 | // and map[string]interface representation. 9 | #UnstructuredConverter: _ 10 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | ###Go### 2 | 3 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 4 | *.o 5 | *.a 6 | *.so 7 | 8 | # Folders 9 | _obj 10 | _test 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof -------------------------------------------------------------------------------- /charts/cinema/charts/users/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "users.serviceAccountName" . }} 6 | labels: 7 | {{- include "users.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /timoni/website/values.cue: -------------------------------------------------------------------------------- 1 | // Code generated by timoni. 2 | // Note that this file must have no imports and all values must be concrete. 3 | 4 | @if(!debug) 5 | 6 | package main 7 | 8 | // Defaults 9 | values: { 10 | image: { 11 | repository: "ghcr.io/mmorejon/cinema-website" 12 | digest: "sha256:ba1873a0616cb0bc6b0bf4a109e8e569438cc28b89512cfbf63b093650c132bf" 13 | tag: "v2.2.2" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "movies.serviceAccountName" . }} 6 | labels: 7 | {{- include "movies.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /charts/cinema/charts/bookings/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "bookings.serviceAccountName" . }} 6 | labels: 7 | {{- include "bookings.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "website.serviceAccountName" . }} 6 | labels: 7 | {{- include "website.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/negotiate_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // NegotiateError is returned when a ClientNegotiator is unable to locate 8 | // a serializer for the requested operation. 9 | #NegotiateError: { 10 | ContentType: string 11 | Stream: bool 12 | } 13 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/negotiate_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // NegotiateError is returned when a ClientNegotiator is unable to locate 8 | // a serializer for the requested operation. 9 | #NegotiateError: { 10 | ContentType: string 11 | Stream: bool 12 | } 13 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/negotiate_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // NegotiateError is returned when a ClientNegotiator is unable to locate 8 | // a serializer for the requested operation. 9 | #NegotiateError: { 10 | ContentType: string 11 | Stream: bool 12 | } 13 | -------------------------------------------------------------------------------- /bookings/pkg/models/models.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "go.mongodb.org/mongo-driver/bson/primitive" 5 | ) 6 | 7 | // Booking is used to represent booking profile data 8 | type Booking struct { 9 | ID primitive.ObjectID `bson:"_id,omitempty"` 10 | UserID string `bson:"userid"` 11 | ShowtimeID string `bson:"showtimeid"` 12 | Movies []string `bson:"movies"` 13 | } 14 | -------------------------------------------------------------------------------- /charts/cinema/charts/showtimes/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "showtimes.serviceAccountName" . }} 6 | labels: 7 | {{- include "showtimes.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/duration_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Duration is a wrapper around time.Duration which supports correct 8 | // marshaling to YAML and JSON. In particular, it marshals into strings, which 9 | // can be used as map keys in json. 10 | #Duration: _ 11 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/duration_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Duration is a wrapper around time.Duration which supports correct 8 | // marshaling to YAML and JSON. In particular, it marshals into strings, which 9 | // can be used as map keys in json. 10 | #Duration: _ 11 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/duration_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Duration is a wrapper around time.Duration which supports correct 8 | // marshaling to YAML and JSON. In particular, it marshals into strings, which 9 | // can be used as map keys in json. 10 | #Duration: _ 11 | -------------------------------------------------------------------------------- /bookings/.gitignore: -------------------------------------------------------------------------------- 1 | ###Go### 2 | 3 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 4 | *.o 5 | *.a 6 | *.so 7 | 8 | # Folders 9 | _obj 10 | _test 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof 27 | 28 | # Helm chart folder 29 | chart -------------------------------------------------------------------------------- /movies/.gitignore: -------------------------------------------------------------------------------- 1 | ###Go### 2 | 3 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 4 | *.o 5 | *.a 6 | *.so 7 | 8 | # Folders 9 | _obj 10 | _test 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof 27 | 28 | # Helm chart folder 29 | chart -------------------------------------------------------------------------------- /showtimes/.gitignore: -------------------------------------------------------------------------------- 1 | ###Go### 2 | 3 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 4 | *.o 5 | *.a 6 | *.so 7 | 8 | # Folders 9 | _obj 10 | _test 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof 27 | 28 | # Helm chart folder 29 | chart -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/types/uid_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // UID is a type that holds unique ID values, including UUIDs. Because we 8 | // don't ONLY use UUIDs, this is an alias to string. Being a type captures 9 | // intent and helps make sure that UIDs and names do not get conflated. 10 | #UID: string 11 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/types/uid_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // UID is a type that holds unique ID values, including UUIDs. Because we 8 | // don't ONLY use UUIDs, this is an alias to string. Being a type captures 9 | // intent and helps make sure that UIDs and names do not get conflated. 10 | #UID: string 11 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/types/uid_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // UID is a type that holds unique ID values, including UUIDs. Because we 8 | // don't ONLY use UUIDs, this is an alias to string. Being a type captures 9 | // intent and helps make sure that UIDs and names do not get conflated. 10 | #UID: string 11 | -------------------------------------------------------------------------------- /charts/cinema/charts/users/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "users.fullname" . }} 5 | labels: 6 | {{- include "users.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "users.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "movies.fullname" . }} 5 | labels: 6 | {{- include "movies.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "movies.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "website.fullname" . }} 5 | labels: 6 | {{- include "website.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "website.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /charts/cinema/charts/bookings/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "bookings.fullname" . }} 5 | labels: 6 | {{- include "bookings.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "bookings.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /showtimes/pkg/models/models.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "time" 5 | 6 | "go.mongodb.org/mongo-driver/bson/primitive" 7 | ) 8 | 9 | // ShowTime is used to represent showtime profile data 10 | type ShowTime struct { 11 | ID primitive.ObjectID `bson:"_id,omitempty"` 12 | Date string `bson:"date,omitempty"` 13 | CreatedAt time.Time `bson:"created_at,omitempty"` 14 | Movies []string `bson:"movies,omitempty"` 15 | } 16 | -------------------------------------------------------------------------------- /users/.gitignore: -------------------------------------------------------------------------------- 1 | ###Go### 2 | 3 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 4 | *.o 5 | *.a 6 | *.so 7 | 8 | # Folders 9 | _obj 10 | _test 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof 27 | 28 | # Helm chart folder 29 | chart 30 | 31 | # VSCode 32 | .vscode -------------------------------------------------------------------------------- /charts/cinema/charts/showtimes/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "showtimes.fullname" . }} 5 | labels: 6 | {{- include "showtimes.labels" . | nindent 4 }} 7 | spec: 8 | type: {{ .Values.service.type }} 9 | ports: 10 | - port: {{ .Values.service.port }} 11 | targetPort: http 12 | protocol: TCP 13 | name: http 14 | selector: 15 | {{- include "showtimes.selectorLabels" . | nindent 4 }} 16 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // Pair of strings. We keed the name of fields and the doc 8 | #Pair: { 9 | Name: string 10 | Doc: string 11 | } 12 | 13 | // KubeTypes is an array to represent all available types in a parsed file. [0] is for the type itself 14 | #KubeTypes: [...#Pair] 15 | -------------------------------------------------------------------------------- /users/cmd/app/routes.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/gorilla/mux" 5 | ) 6 | 7 | func (app *application) routes() *mux.Router { 8 | // Register handler functions. 9 | r := mux.NewRouter() 10 | r.HandleFunc("/api/users/", app.all).Methods("GET") 11 | r.HandleFunc("/api/users/{id}", app.findByID).Methods("GET") 12 | r.HandleFunc("/api/users/", app.insert).Methods("POST") 13 | r.HandleFunc("/api/users/{id}", app.delete).Methods("DELETE") 14 | 15 | return r 16 | } 17 | -------------------------------------------------------------------------------- /charts/cinema/charts/users/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "users.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "users.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "users.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /movies/cmd/app/routes.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/gorilla/mux" 5 | ) 6 | 7 | func (app *application) routes() *mux.Router { 8 | // Register handler functions. 9 | r := mux.NewRouter() 10 | r.HandleFunc("/api/movies/", app.all).Methods("GET") 11 | r.HandleFunc("/api/movies/{id}", app.findByID).Methods("GET") 12 | r.HandleFunc("/api/movies/", app.insert).Methods("POST") 13 | r.HandleFunc("/api/movies/{id}", app.delete).Methods("DELETE") 14 | 15 | return r 16 | } 17 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/splice_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // Splice is the interface that wraps the Splice method. 8 | // 9 | // Splice moves data from given slice without copying the underlying data for 10 | // efficiency purpose. Therefore, the caller should make sure the underlying 11 | // data is not changed later. 12 | #Splice: _ 13 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // Pair of strings. We keed the name of fields and the doc 8 | #Pair: { 9 | Name: string 10 | Doc: string 11 | } 12 | 13 | // KubeTypes is an array to represent all available types in a parsed file. [0] is for the type itself 14 | #KubeTypes: [...#Pair] 15 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/swagger_doc_generator_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // Pair of strings. We keed the name of fields and the doc 8 | #Pair: { 9 | Name: string 10 | Doc: string 11 | } 12 | 13 | // KubeTypes is an array to represent all available types in a parsed file. [0] is for the type itself 14 | #KubeTypes: [...#Pair] 15 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "movies.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "movies.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "movies.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/splice_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // Splice is the interface that wraps the Splice method. 8 | // 9 | // Splice moves data from given slice without copying the underlying data for 10 | // efficiency purpose. Therefore, the caller should make sure the underlying 11 | // data is not changed later. 12 | #Splice: _ 13 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/splice_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // Splice is the interface that wraps the Splice method. 8 | // 9 | // Splice moves data from given slice without copying the underlying data for 10 | // efficiency purpose. Therefore, the caller should make sure the underlying 11 | // data is not changed later. 12 | #Splice: _ 13 | -------------------------------------------------------------------------------- /bookings/cmd/app/routes.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/gorilla/mux" 5 | ) 6 | 7 | func (app *application) routes() *mux.Router { 8 | // Register handler functions. 9 | r := mux.NewRouter() 10 | r.HandleFunc("/api/bookings/", app.all).Methods("GET") 11 | r.HandleFunc("/api/bookings/{id}", app.findByID).Methods("GET") 12 | r.HandleFunc("/api/bookings/", app.insert).Methods("POST") 13 | r.HandleFunc("/api/bookings/{id}", app.delete).Methods("DELETE") 14 | 15 | return r 16 | } 17 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "website.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "website.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "website.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/admissionregistration/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admissionregistration/v1 4 | 5 | // Package v1 is the v1 version of the API. 6 | // AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration 7 | // MutatingWebhookConfiguration and ValidatingWebhookConfiguration are for the 8 | // new dynamic admission controller configuration. 9 | package v1 10 | -------------------------------------------------------------------------------- /charts/cinema/charts/bookings/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "bookings.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "bookings.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "bookings.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /charts/cinema/charts/showtimes/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "showtimes.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "showtimes.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test 9 | spec: 10 | containers: 11 | - name: wget 12 | image: busybox 13 | command: ['wget'] 14 | args: ['{{ include "showtimes.fullname" . }}:{{ .Values.service.port }}'] 15 | restartPolicy: Never 16 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | #RFC3339Micro: "2006-01-02T15:04:05.000000Z07:00" 8 | 9 | // MicroTime is version of Time with microsecond level precision. 10 | // 11 | // +protobuf.options.marshal=false 12 | // +protobuf.as=Timestamp 13 | // +protobuf.options.(gogoproto.goproto_stringer)=false 14 | #MicroTime: _ 15 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/admissionregistration/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admissionregistration/v1 4 | 5 | // Package v1 is the v1 version of the API. 6 | // AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration 7 | // MutatingWebhookConfiguration and ValidatingWebhookConfiguration are for the 8 | // new dynamic admission controller configuration. 9 | package v1 10 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/admissionregistration/v1/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/admissionregistration/v1 4 | 5 | // Package v1 is the v1 version of the API. 6 | // AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration 7 | // MutatingWebhookConfiguration and ValidatingWebhookConfiguration are for the 8 | // new dynamic admission controller configuration. 9 | package v1 10 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | #RFC3339Micro: "2006-01-02T15:04:05.000000Z07:00" 8 | 9 | // MicroTime is version of Time with microsecond level precision. 10 | // 11 | // +protobuf.options.marshal=false 12 | // +protobuf.as=Timestamp 13 | // +protobuf.options.(gogoproto.goproto_stringer)=false 14 | #MicroTime: _ 15 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/micro_time_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | #RFC3339Micro: "2006-01-02T15:04:05.000000Z07:00" 8 | 9 | // MicroTime is version of Time with microsecond level precision. 10 | // 11 | // +protobuf.options.marshal=false 12 | // +protobuf.as=Timestamp 13 | // +protobuf.options.(gogoproto.goproto_stringer)=false 14 | #MicroTime: _ 15 | -------------------------------------------------------------------------------- /movies/pkg/models/models.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "time" 5 | 6 | "go.mongodb.org/mongo-driver/bson/primitive" 7 | ) 8 | 9 | // Movie is used to represent movie profile data 10 | type Movie struct { 11 | ID primitive.ObjectID `bson:"_id,omitempty"` 12 | Title string `bson:"title,omitempty"` 13 | Director string `bson:"director,omitempty"` 14 | Rating float32 `bson:"rating,omitempty"` 15 | CreatedOn time.Time `bson:"createdon,omitempty"` 16 | } 17 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/watch/streamwatcher_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // Decoder allows StreamWatcher to watch any stream for which a Decoder can be written. 8 | #Decoder: _ 9 | 10 | // Reporter hides the details of how an error is turned into a runtime.Object for 11 | // reporting on a watch stream since this package may not import a higher level report. 12 | #Reporter: _ 13 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/watch/streamwatcher_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // Decoder allows StreamWatcher to watch any stream for which a Decoder can be written. 8 | #Decoder: _ 9 | 10 | // Reporter hides the details of how an error is turned into a runtime.Object for 11 | // reporting on a watch stream since this package may not import a higher level report. 12 | #Reporter: _ 13 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/watch/streamwatcher_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // Decoder allows StreamWatcher to watch any stream for which a Decoder can be written. 8 | #Decoder: _ 9 | 10 | // Reporter hides the details of how an error is turned into a runtime.Object for 11 | // reporting on a watch stream since this package may not import a higher level report. 12 | #Reporter: _ 13 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/math_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | // maxInt64Factors is the highest value that will be checked when removing factors of 10 from an int64. 8 | // It is also the maximum decimal digits that can be represented with an int64. 9 | _#maxInt64Factors: 18 10 | 11 | _#mostNegative: -9223372036854775808 12 | 13 | _#mostPositive: 9223372036854775807 14 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/math_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | // maxInt64Factors is the highest value that will be checked when removing factors of 10 from an int64. 8 | // It is also the maximum decimal digits that can be represented with an int64. 9 | _#maxInt64Factors: 18 10 | 11 | _#mostNegative: -9223372036854775808 12 | 13 | _#mostPositive: 9223372036854775807 14 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/math_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | // maxInt64Factors is the highest value that will be checked when removing factors of 10 from an int64. 8 | // It is also the maximum decimal digits that can be represented with an int64. 9 | _#maxInt64Factors: 18 10 | 11 | _#mostNegative: -9223372036854775808 12 | 13 | _#mostPositive: 9223372036854775807 14 | -------------------------------------------------------------------------------- /users/cmd/app/helpers.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "runtime/debug" 7 | ) 8 | 9 | func (app *application) serverError(w http.ResponseWriter, err error) { 10 | trace := fmt.Sprintf("%s\n%s", err.Error(), debug.Stack()) 11 | app.errorLog.Output(2, trace) 12 | 13 | http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) 14 | } 15 | 16 | func (app *application) clientError(w http.ResponseWriter, status int) { 17 | http.Error(w, http.StatusText(status), status) 18 | } 19 | -------------------------------------------------------------------------------- /bookings/cmd/app/helpers.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "runtime/debug" 7 | ) 8 | 9 | func (app *application) serverError(w http.ResponseWriter, err error) { 10 | trace := fmt.Sprintf("%s\n%s", err.Error(), debug.Stack()) 11 | app.errorLog.Output(2, trace) 12 | 13 | http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) 14 | } 15 | 16 | func (app *application) clientError(w http.ResponseWriter, status int) { 17 | http.Error(w, http.StatusText(status), status) 18 | } 19 | -------------------------------------------------------------------------------- /movies/cmd/app/helpers.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "runtime/debug" 7 | ) 8 | 9 | func (app *application) serverError(w http.ResponseWriter, err error) { 10 | trace := fmt.Sprintf("%s\n%s", err.Error(), debug.Stack()) 11 | app.errorLog.Output(2, trace) 12 | 13 | http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) 14 | } 15 | 16 | func (app *application) clientError(w http.ResponseWriter, status int) { 17 | http.Error(w, http.StatusText(status), status) 18 | } 19 | -------------------------------------------------------------------------------- /showtimes/cmd/app/helpers.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "net/http" 6 | "runtime/debug" 7 | ) 8 | 9 | func (app *application) serverError(w http.ResponseWriter, err error) { 10 | trace := fmt.Sprintf("%s\n%s", err.Error(), debug.Stack()) 11 | app.errorLog.Output(2, trace) 12 | 13 | http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError) 14 | } 15 | 16 | func (app *application) clientError(w http.ResponseWriter, status int) { 17 | http.Error(w, http.StatusText(status), status) 18 | } 19 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/time_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Time is a wrapper around time.Time which supports correct 8 | // marshaling to YAML and JSON. Wrappers are provided for many 9 | // of the factory methods that the time package offers. 10 | // 11 | // +protobuf.options.marshal=false 12 | // +protobuf.as=Timestamp 13 | // +protobuf.options.(gogoproto.goproto_stringer)=false 14 | #Time: _ 15 | -------------------------------------------------------------------------------- /timoni/api/templates/service.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | ) 6 | 7 | #Service: corev1.#Service & { 8 | _config: #Config 9 | apiVersion: "v1" 10 | kind: "Service" 11 | metadata: _config.metadata 12 | spec: corev1.#ServiceSpec & { 13 | type: corev1.#ServiceTypeClusterIP 14 | selector: _config.selector.labels 15 | ports: [ 16 | { 17 | port: _config.service.port 18 | protocol: "TCP" 19 | name: "http" 20 | targetPort: name 21 | }, 22 | ] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/time_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Time is a wrapper around time.Time which supports correct 8 | // marshaling to YAML and JSON. Wrappers are provided for many 9 | // of the factory methods that the time package offers. 10 | // 11 | // +protobuf.options.marshal=false 12 | // +protobuf.as=Timestamp 13 | // +protobuf.options.(gogoproto.goproto_stringer)=false 14 | #Time: _ 15 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/time_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Time is a wrapper around time.Time which supports correct 8 | // marshaling to YAML and JSON. Wrappers are provided for many 9 | // of the factory methods that the time package offers. 10 | // 11 | // +protobuf.options.marshal=false 12 | // +protobuf.as=Timestamp 13 | // +protobuf.options.(gogoproto.goproto_stringer)=false 14 | #Time: _ 15 | -------------------------------------------------------------------------------- /timoni/mongodb/templates/service.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | ) 6 | 7 | #Service: corev1.#Service & { 8 | _config: #Config 9 | apiVersion: "v1" 10 | kind: "Service" 11 | metadata: _config.metadata 12 | spec: corev1.#ServiceSpec & { 13 | type: corev1.#ServiceTypeClusterIP 14 | selector: _config.selector.labels 15 | ports: [ 16 | { 17 | port: _config.service.port 18 | protocol: "TCP" 19 | name: "http" 20 | targetPort: name 21 | }, 22 | ] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /timoni/website/templates/service.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | ) 6 | 7 | #Service: corev1.#Service & { 8 | _config: #Config 9 | apiVersion: "v1" 10 | kind: "Service" 11 | metadata: _config.metadata 12 | spec: corev1.#ServiceSpec & { 13 | type: corev1.#ServiceTypeClusterIP 14 | selector: _config.selector.labels 15 | ports: [ 16 | { 17 | port: _config.service.port 18 | protocol: "TCP" 19 | name: "http" 20 | targetPort: name 21 | }, 22 | ] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /charts/cinema/Chart.lock: -------------------------------------------------------------------------------- 1 | dependencies: 2 | - name: mongodb 3 | repository: https://charts.bitnami.com/bitnami 4 | version: 13.6.8 5 | - name: users 6 | repository: "" 7 | version: 0.x.x 8 | - name: movies 9 | repository: "" 10 | version: 0.x.x 11 | - name: showtimes 12 | repository: "" 13 | version: 0.x.x 14 | - name: bookings 15 | repository: "" 16 | version: 0.x.x 17 | - name: website 18 | repository: "" 19 | version: 0.x.x 20 | digest: sha256:ef3956ed765acfc22170d65610b3aede92a799e52fcb373ed771055f1c7a0b53 21 | generated: "2023-04-26T00:35:55.68291+02:00" 22 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/networking/v1/well_known_annotations_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/networking/v1 4 | 5 | package v1 6 | 7 | // AnnotationIsDefaultIngressClass can be used to indicate that an 8 | // IngressClass should be considered default. When a single IngressClass 9 | // resource has this annotation set to true, new Ingress resources without a 10 | // class specified will be assigned this default class. 11 | #AnnotationIsDefaultIngressClass: "ingressclass.kubernetes.io/is-default-class" 12 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/networking/v1/well_known_annotations_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/networking/v1 4 | 5 | package v1 6 | 7 | // AnnotationIsDefaultIngressClass can be used to indicate that an 8 | // IngressClass should be considered default. When a single IngressClass 9 | // resource has this annotation set to true, new Ingress resources without a 10 | // class specified will be assigned this default class. 11 | #AnnotationIsDefaultIngressClass: "ingressclass.kubernetes.io/is-default-class" 12 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/networking/v1/well_known_annotations_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/networking/v1 4 | 5 | package v1 6 | 7 | // AnnotationIsDefaultIngressClass can be used to indicate that an 8 | // IngressClass should be considered default. When a single IngressClass 9 | // resource has this annotation set to true, new Ingress resources without a 10 | // class specified will be assigned this default class. 11 | #AnnotationIsDefaultIngressClass: "ingressclass.kubernetes.io/is-default-class" 12 | -------------------------------------------------------------------------------- /showtimes/cmd/app/routes.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/gorilla/mux" 5 | ) 6 | 7 | func (app *application) routes() *mux.Router { 8 | // Register handler functions. 9 | r := mux.NewRouter() 10 | r.HandleFunc("/api/showtimes/", app.all).Methods("GET") 11 | r.HandleFunc("/api/showtimes/{id}", app.findByID).Methods("GET") 12 | r.HandleFunc("/api/showtimes/filter/date/{date}", app.findByDate).Methods("GET") 13 | r.HandleFunc("/api/showtimes/", app.insert).Methods("POST") 14 | r.HandleFunc("/api/showtimes/{id}", app.delete).Methods("DELETE") 15 | 16 | return r 17 | } 18 | -------------------------------------------------------------------------------- /website/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mmorejon/microservices-docker-go-mongodb/website 2 | 3 | go 1.19 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.0 7 | github.com/mmorejon/microservices-docker-go-mongodb/bookings v0.0.0-20221030191256-4469296596ed 8 | github.com/mmorejon/microservices-docker-go-mongodb/movies v0.0.0-20221030191256-4469296596ed 9 | github.com/mmorejon/microservices-docker-go-mongodb/showtimes v0.0.0-20221030191256-4469296596ed 10 | github.com/mmorejon/microservices-docker-go-mongodb/users v0.0.0-20221030191256-4469296596ed 11 | ) 12 | 13 | require go.mongodb.org/mongo-driver v1.7.1 // indirect 14 | -------------------------------------------------------------------------------- /timoni/mongodb/debug_values.cue: -------------------------------------------------------------------------------- 1 | @if(debug) 2 | 3 | package main 4 | 5 | // Values used by debug_tool.cue. 6 | // Debug example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. 7 | values: { 8 | podAnnotations: "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 9 | image: { 10 | repository: "docker.io/nginx" 11 | tag: "1-alpine" 12 | digest: "" 13 | } 14 | affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: [{ 15 | matchExpressions: [{ 16 | key: "kubernetes.io/os" 17 | operator: "In" 18 | values: ["linux"] 19 | }] 20 | }] 21 | } 22 | -------------------------------------------------------------------------------- /charts/cinema/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | version: 0.2.2 3 | appVersion: v2.2.2 4 | name: cinema 5 | description: A Helm chart to deploy Cinema project in Kubernetes 6 | home: https://github.com/mmorejon/microservices-docker-go-mongodb 7 | type: application 8 | dependencies: 9 | - condition: mongodb.enabled 10 | name: mongodb 11 | repository: https://charts.bitnami.com/bitnami 12 | version: 13.6.x 13 | - name: users 14 | version: 0.x.x 15 | - name: movies 16 | version: 0.x.x 17 | - name: showtimes 18 | version: 0.x.x 19 | - name: bookings 20 | version: 0.x.x 21 | - name: website 22 | version: 0.x.x 23 | sources: 24 | - https://github.com/mmorejon/microservices-docker-go-mongodb 25 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/helper_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // MultiObjectTyper returns the types of objects across multiple schemes in order. 8 | #MultiObjectTyper: [...#ObjectTyper] 9 | 10 | _#defaultFramer: { 11 | } 12 | 13 | // WithVersionEncoder serializes an object and ensures the GVK is set. 14 | #WithVersionEncoder: { 15 | Version: #GroupVersioner 16 | Encoder: #Encoder 17 | ObjectTyper: #ObjectTyper 18 | } 19 | 20 | // WithoutVersionDecoder clears the group version kind of a deserialized object. 21 | #WithoutVersionDecoder: { 22 | Decoder: #Decoder 23 | } 24 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/helper_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // MultiObjectTyper returns the types of objects across multiple schemes in order. 8 | #MultiObjectTyper: [...#ObjectTyper] 9 | 10 | _#defaultFramer: { 11 | } 12 | 13 | // WithVersionEncoder serializes an object and ensures the GVK is set. 14 | #WithVersionEncoder: { 15 | Version: #GroupVersioner 16 | Encoder: #Encoder 17 | ObjectTyper: #ObjectTyper 18 | } 19 | 20 | // WithoutVersionDecoder clears the group version kind of a deserialized object. 21 | #WithoutVersionDecoder: { 22 | Decoder: #Decoder 23 | } 24 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/helper_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // MultiObjectTyper returns the types of objects across multiple schemes in order. 8 | #MultiObjectTyper: [...#ObjectTyper] 9 | 10 | _#defaultFramer: { 11 | } 12 | 13 | // WithVersionEncoder serializes an object and ensures the GVK is set. 14 | #WithVersionEncoder: { 15 | Version: #GroupVersioner 16 | Encoder: #Encoder 17 | ObjectTyper: #ObjectTyper 18 | } 19 | 20 | // WithoutVersionDecoder clears the group version kind of a deserialized object. 21 | #WithoutVersionDecoder: { 22 | Decoder: #Decoder 23 | } 24 | -------------------------------------------------------------------------------- /users/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mmorejon/microservices-docker-go-mongodb/users 2 | 3 | go 1.19 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.0 7 | go.mongodb.org/mongo-driver v1.11.0 8 | ) 9 | 10 | require ( 11 | github.com/golang/snappy v0.0.4 // indirect 12 | github.com/klauspost/compress v1.15.12 // indirect 13 | github.com/montanaflynn/stats v0.6.6 // indirect 14 | github.com/pkg/errors v0.9.1 // indirect 15 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 16 | github.com/xdg-go/scram v1.1.1 // indirect 17 | github.com/xdg-go/stringprep v1.0.3 // indirect 18 | github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect 19 | golang.org/x/crypto v0.3.0 // indirect 20 | golang.org/x/sync v0.1.0 // indirect 21 | golang.org/x/text v0.4.0 // indirect 22 | ) 23 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/watch/mux_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // FullChannelBehavior controls how the Broadcaster reacts if a watcher's watch 8 | // channel is full. 9 | #FullChannelBehavior: int // #enumFullChannelBehavior 10 | 11 | #enumFullChannelBehavior: 12 | #WaitIfChannelFull | 13 | #DropIfChannelFull 14 | 15 | #values_FullChannelBehavior: { 16 | WaitIfChannelFull: #WaitIfChannelFull 17 | DropIfChannelFull: #DropIfChannelFull 18 | } 19 | 20 | #WaitIfChannelFull: #FullChannelBehavior & 0 21 | #DropIfChannelFull: #FullChannelBehavior & 1 22 | 23 | _#incomingQueueLength: 25 24 | 25 | _#internalRunFunctionMarker: "internal-do-function" 26 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/watch/mux_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // FullChannelBehavior controls how the Broadcaster reacts if a watcher's watch 8 | // channel is full. 9 | #FullChannelBehavior: int // #enumFullChannelBehavior 10 | 11 | #enumFullChannelBehavior: 12 | #WaitIfChannelFull | 13 | #DropIfChannelFull 14 | 15 | #values_FullChannelBehavior: { 16 | WaitIfChannelFull: #WaitIfChannelFull 17 | DropIfChannelFull: #DropIfChannelFull 18 | } 19 | 20 | #WaitIfChannelFull: #FullChannelBehavior & 0 21 | #DropIfChannelFull: #FullChannelBehavior & 1 22 | 23 | _#incomingQueueLength: 25 24 | 25 | _#internalRunFunctionMarker: "internal-do-function" 26 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/watch/mux_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | // FullChannelBehavior controls how the Broadcaster reacts if a watcher's watch 8 | // channel is full. 9 | #FullChannelBehavior: int // #enumFullChannelBehavior 10 | 11 | #enumFullChannelBehavior: 12 | #WaitIfChannelFull | 13 | #DropIfChannelFull 14 | 15 | #values_FullChannelBehavior: { 16 | WaitIfChannelFull: #WaitIfChannelFull 17 | DropIfChannelFull: #DropIfChannelFull 18 | } 19 | 20 | #WaitIfChannelFull: #FullChannelBehavior & 0 21 | #DropIfChannelFull: #FullChannelBehavior & 1 22 | 23 | _#incomingQueueLength: 25 24 | 25 | _#internalRunFunctionMarker: "internal-do-function" 26 | -------------------------------------------------------------------------------- /movies/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mmorejon/microservices-docker-go-mongodb/movies 2 | 3 | go 1.19 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.0 7 | go.mongodb.org/mongo-driver v1.11.0 8 | ) 9 | 10 | require ( 11 | github.com/golang/snappy v0.0.4 // indirect 12 | github.com/klauspost/compress v1.15.12 // indirect 13 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect 14 | github.com/pkg/errors v0.9.1 // indirect 15 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 16 | github.com/xdg-go/scram v1.1.1 // indirect 17 | github.com/xdg-go/stringprep v1.0.3 // indirect 18 | github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect 19 | golang.org/x/crypto v0.3.0 // indirect 20 | golang.org/x/sync v0.1.0 // indirect 21 | golang.org/x/text v0.4.0 // indirect 22 | ) 23 | -------------------------------------------------------------------------------- /bookings/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mmorejon/microservices-docker-go-mongodb/bookings 2 | 3 | go 1.19 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.0 7 | go.mongodb.org/mongo-driver v1.11.0 8 | ) 9 | 10 | require ( 11 | github.com/golang/snappy v0.0.4 // indirect 12 | github.com/klauspost/compress v1.15.12 // indirect 13 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect 14 | github.com/pkg/errors v0.9.1 // indirect 15 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 16 | github.com/xdg-go/scram v1.1.1 // indirect 17 | github.com/xdg-go/stringprep v1.0.3 // indirect 18 | github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect 19 | golang.org/x/crypto v0.3.0 // indirect 20 | golang.org/x/sync v0.1.0 // indirect 21 | golang.org/x/text v0.4.0 // indirect 22 | ) 23 | -------------------------------------------------------------------------------- /showtimes/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mmorejon/microservices-docker-go-mongodb/showtimes 2 | 3 | go 1.19 4 | 5 | require ( 6 | github.com/gorilla/mux v1.8.0 7 | go.mongodb.org/mongo-driver v1.11.0 8 | ) 9 | 10 | require ( 11 | github.com/golang/snappy v0.0.4 // indirect 12 | github.com/klauspost/compress v1.15.12 // indirect 13 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect 14 | github.com/pkg/errors v0.9.1 // indirect 15 | github.com/xdg-go/pbkdf2 v1.0.0 // indirect 16 | github.com/xdg-go/scram v1.1.1 // indirect 17 | github.com/xdg-go/stringprep v1.0.3 // indirect 18 | github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect 19 | golang.org/x/crypto v0.3.0 // indirect 20 | golang.org/x/sync v0.1.0 // indirect 21 | golang.org/x/text v0.4.0 // indirect 22 | ) 23 | -------------------------------------------------------------------------------- /website/ui/html/users/view.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 |
13 | Full Name: 14 | {{.Name}} {{.LastName}} 15 |
16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 | 24 | {{end}} -------------------------------------------------------------------------------- /.github/workflows/close-inactive-issues.yml: -------------------------------------------------------------------------------- 1 | name: Close inactive issues 2 | on: 3 | schedule: 4 | - cron: "30 1 * * *" 5 | 6 | jobs: 7 | close-issues: 8 | runs-on: ubuntu-latest 9 | permissions: 10 | issues: write 11 | pull-requests: write 12 | steps: 13 | - uses: actions/stale@v4 14 | with: 15 | days-before-issue-stale: 30 16 | days-before-issue-close: 14 17 | stale-issue-label: "stale" 18 | stale-issue-message: "This issue is stale because it has been open for 30 days with no activity." 19 | close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." 20 | days-before-pr-stale: -1 21 | days-before-pr-close: -1 22 | repo-token: ${{ secrets.ISSUES }} 23 | -------------------------------------------------------------------------------- /timoni/api/debug_values.cue: -------------------------------------------------------------------------------- 1 | @if(debug) 2 | 3 | package main 4 | 5 | // Values used by debug_tool.cue. 6 | // Debug example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. 7 | values: { 8 | podAnnotations: "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 9 | message: "Hello Debug" 10 | image: { 11 | repository: "docker.io/nginx" 12 | tag: "1-alpine" 13 | digest: "" 14 | } 15 | test: { 16 | enabled: true 17 | image: { 18 | repository: "docker.io/curlimages/curl" 19 | tag: "latest" 20 | digest: "" 21 | } 22 | } 23 | affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: [{ 24 | matchExpressions: [{ 25 | key: "kubernetes.io/os" 26 | operator: "In" 27 | values: ["linux"] 28 | }] 29 | }] 30 | } 31 | -------------------------------------------------------------------------------- /timoni/website/debug_values.cue: -------------------------------------------------------------------------------- 1 | @if(debug) 2 | 3 | package main 4 | 5 | // Values used by debug_tool.cue. 6 | // Debug example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. 7 | values: { 8 | podAnnotations: "cluster-autoscaler.kubernetes.io/safe-to-evict": "true" 9 | message: "Hello Debug" 10 | image: { 11 | repository: "docker.io/nginx" 12 | tag: "1-alpine" 13 | digest: "" 14 | } 15 | test: { 16 | enabled: true 17 | image: { 18 | repository: "docker.io/curlimages/curl" 19 | tag: "latest" 20 | digest: "" 21 | } 22 | } 23 | affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: [{ 24 | matchExpressions: [{ 25 | key: "kubernetes.io/os" 26 | operator: "In" 27 | values: ["linux"] 28 | }] 29 | }] 30 | } 31 | -------------------------------------------------------------------------------- /website/cmd/web/routes.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "github.com/gorilla/mux" 5 | ) 6 | 7 | func (app *application) routes() *mux.Router { 8 | // Register handler functions. 9 | r := mux.NewRouter() 10 | r.HandleFunc("/", app.home) 11 | r.HandleFunc("/users/list", app.usersList) 12 | r.HandleFunc("/users/view/{id}", app.usersView) 13 | r.HandleFunc("/movies/list", app.moviesList) 14 | r.HandleFunc("/movies/view/{id}", app.moviesView) 15 | r.HandleFunc("/showtimes/list", app.showtimesList) 16 | r.HandleFunc("/showtimes/view/{id}", app.showtimesView) 17 | r.HandleFunc("/bookings/list", app.bookingsList) 18 | r.HandleFunc("/bookings/view/{id}", app.bookingsView) 19 | 20 | // This will serve files under http://localhost:8000/static/ 21 | r.PathPrefix("/static/").Handler(app.static("./ui/static/")) 22 | return r 23 | } 24 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/types/patch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // Similarly to above, these are constants to support HTTP PATCH utilized by 8 | // both the client and server that didn't make sense for a whole package to be 9 | // dedicated to. 10 | #PatchType: string // #enumPatchType 11 | 12 | #enumPatchType: 13 | #JSONPatchType | 14 | #MergePatchType | 15 | #StrategicMergePatchType | 16 | #ApplyPatchType 17 | 18 | #JSONPatchType: #PatchType & "application/json-patch+json" 19 | #MergePatchType: #PatchType & "application/merge-patch+json" 20 | #StrategicMergePatchType: #PatchType & "application/strategic-merge-patch+json" 21 | #ApplyPatchType: #PatchType & "application/apply-patch+yaml" 22 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/types/patch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // Similarly to above, these are constants to support HTTP PATCH utilized by 8 | // both the client and server that didn't make sense for a whole package to be 9 | // dedicated to. 10 | #PatchType: string // #enumPatchType 11 | 12 | #enumPatchType: 13 | #JSONPatchType | 14 | #MergePatchType | 15 | #StrategicMergePatchType | 16 | #ApplyPatchType 17 | 18 | #JSONPatchType: #PatchType & "application/json-patch+json" 19 | #MergePatchType: #PatchType & "application/merge-patch+json" 20 | #StrategicMergePatchType: #PatchType & "application/strategic-merge-patch+json" 21 | #ApplyPatchType: #PatchType & "application/apply-patch+yaml" 22 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/types/patch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // Similarly to above, these are constants to support HTTP PATCH utilized by 8 | // both the client and server that didn't make sense for a whole package to be 9 | // dedicated to. 10 | #PatchType: string // #enumPatchType 11 | 12 | #enumPatchType: 13 | #JSONPatchType | 14 | #MergePatchType | 15 | #StrategicMergePatchType | 16 | #ApplyPatchType 17 | 18 | #JSONPatchType: #PatchType & "application/json-patch+json" 19 | #MergePatchType: #PatchType & "application/merge-patch+json" 20 | #StrategicMergePatchType: #PatchType & "application/strategic-merge-patch+json" 21 | #ApplyPatchType: #PatchType & "application/apply-patch+yaml" 22 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/pkg/timoni.sh/core/v1alpha1/action.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | // Action holds the list of annotations for controlling 7 | // Timoni's apply behaviour of Kubernetes resources. 8 | Action: { 9 | // Force annotation for recreating immutable resources such as Kubernetes Jobs. 10 | Force: { 11 | "action.timoni.sh/force": ActionStatus.Enabled 12 | } 13 | // One-off annotation for appling resources only if they don't exist on the cluster. 14 | Oneoff: { 15 | "action.timoni.sh/one-off": ActionStatus.Enabled 16 | } 17 | // Keep annotation for preventing Timoni's garbage collector from deleting resources. 18 | Keep: { 19 | "action.timoni.sh/prune": ActionStatus.Disabled 20 | } 21 | } 22 | 23 | ActionStatus: { 24 | Enabled: "enabled" 25 | Disabled: "disabled" 26 | } 27 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/pkg/timoni.sh/core/v1alpha1/action.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | // Action holds the list of annotations for controlling 7 | // Timoni's apply behaviour of Kubernetes resources. 8 | Action: { 9 | // Force annotation for recreating immutable resources such as Kubernetes Jobs. 10 | Force: { 11 | "action.timoni.sh/force": ActionStatus.Enabled 12 | } 13 | // One-off annotation for appling resources only if they don't exist on the cluster. 14 | Oneoff: { 15 | "action.timoni.sh/one-off": ActionStatus.Enabled 16 | } 17 | // Keep annotation for preventing Timoni's garbage collector from deleting resources. 18 | Keep: { 19 | "action.timoni.sh/prune": ActionStatus.Disabled 20 | } 21 | } 22 | 23 | ActionStatus: { 24 | Enabled: "enabled" 25 | Disabled: "disabled" 26 | } 27 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/pkg/timoni.sh/core/v1alpha1/action.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | // Action holds the list of annotations for controlling 7 | // Timoni's apply behaviour of Kubernetes resources. 8 | Action: { 9 | // Force annotation for recreating immutable resources such as Kubernetes Jobs. 10 | Force: { 11 | "action.timoni.sh/force": ActionStatus.Enabled 12 | } 13 | // One-off annotation for appling resources only if they don't exist on the cluster. 14 | Oneoff: { 15 | "action.timoni.sh/one-off": ActionStatus.Enabled 16 | } 17 | // Keep annotation for preventing Timoni's garbage collector from deleting resources. 18 | Keep: { 19 | "action.timoni.sh/prune": ActionStatus.Disabled 20 | } 21 | } 22 | 23 | ActionStatus: { 24 | Enabled: "enabled" 25 | Disabled: "disabled" 26 | } 27 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/util/intstr/intstr_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/util/intstr 4 | 5 | package intstr 6 | 7 | // IntOrString is a type that can hold an int32 or a string. When used in 8 | // JSON or YAML marshalling and unmarshalling, it produces or consumes the 9 | // inner type. This allows you to have, for example, a JSON field that can 10 | // accept a name or number. 11 | // TODO: Rename to Int32OrString 12 | // 13 | // +protobuf=true 14 | // +protobuf.options.(gogoproto.goproto_stringer)=false 15 | // +k8s:openapi-gen=true 16 | #IntOrString: _ 17 | 18 | // Type represents the stored type of IntOrString. 19 | #Type: int64 // #enumType 20 | 21 | #enumType: 22 | #Int | 23 | #String 24 | 25 | #values_Type: { 26 | Int: #Int 27 | String: #String 28 | } 29 | 30 | #Int: #Type & 0 31 | #String: #Type & 1 32 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/util/intstr/intstr_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/util/intstr 4 | 5 | package intstr 6 | 7 | // IntOrString is a type that can hold an int32 or a string. When used in 8 | // JSON or YAML marshalling and unmarshalling, it produces or consumes the 9 | // inner type. This allows you to have, for example, a JSON field that can 10 | // accept a name or number. 11 | // TODO: Rename to Int32OrString 12 | // 13 | // +protobuf=true 14 | // +protobuf.options.(gogoproto.goproto_stringer)=false 15 | // +k8s:openapi-gen=true 16 | #IntOrString: _ 17 | 18 | // Type represents the stored type of IntOrString. 19 | #Type: int64 // #enumType 20 | 21 | #enumType: 22 | #Int | 23 | #String 24 | 25 | #values_Type: { 26 | Int: #Int 27 | String: #String 28 | } 29 | 30 | #Int: #Type & 0 31 | #String: #Type & 1 32 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/util/intstr/intstr_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/util/intstr 4 | 5 | package intstr 6 | 7 | // IntOrString is a type that can hold an int32 or a string. When used in 8 | // JSON or YAML marshalling and unmarshalling, it produces or consumes the 9 | // inner type. This allows you to have, for example, a JSON field that can 10 | // accept a name or number. 11 | // TODO: Rename to Int32OrString 12 | // 13 | // +protobuf=true 14 | // +protobuf.options.(gogoproto.goproto_stringer)=false 15 | // +k8s:openapi-gen=true 16 | #IntOrString: _ 17 | 18 | // Type represents the stored type of IntOrString. 19 | #Type: int64 // #enumType 20 | 21 | #enumType: 22 | #Int | 23 | #String 24 | 25 | #values_Type: { 26 | Int: #Int 27 | String: #String 28 | } 29 | 30 | #Int: #Type & 0 31 | #String: #Type & 1 32 | -------------------------------------------------------------------------------- /users/Dockerfile: -------------------------------------------------------------------------------- 1 | # base image 2 | FROM golang:1.19.3-alpine AS builder 3 | # create appuser 4 | RUN adduser -D -g '' elf 5 | # create workspace 6 | WORKDIR /opt/app/ 7 | COPY go.mod go.sum ./ 8 | # fetch dependancies 9 | RUN go mod download && \ 10 | go mod verify 11 | # copy the source code as the last step 12 | COPY . . 13 | # build binary 14 | RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o /go/bin/cinema-users ./cmd/app 15 | 16 | 17 | # build a small image 18 | FROM alpine:3.17.3 19 | LABEL language="golang" 20 | LABEL org.opencontainers.image.source https://github.com/mmorejon/microservices-docker-go-mongodb 21 | # import the user and group files from the builder 22 | COPY --from=builder /etc/passwd /etc/passwd 23 | # copy the static executable 24 | COPY --from=builder --chown=elf:1000 /go/bin/cinema-users /cinema-users 25 | # use a non-root user 26 | USER elf 27 | # run app 28 | ENTRYPOINT ["./cinema-users"] 29 | -------------------------------------------------------------------------------- /movies/Dockerfile: -------------------------------------------------------------------------------- 1 | # base image 2 | FROM golang:1.19.3-alpine AS builder 3 | # create appuser. 4 | RUN adduser -D -g '' elf 5 | # create workspace 6 | WORKDIR /opt/app/ 7 | COPY go.mod go.sum ./ 8 | # fetch dependancies 9 | RUN go mod download && \ 10 | go mod verify 11 | # copy the source code as the last step 12 | COPY . . 13 | # build binary 14 | RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o /go/bin/cinema-movies ./cmd/app 15 | 16 | 17 | # build a small image 18 | FROM alpine:3.17.3 19 | LABEL language="golang" 20 | LABEL org.opencontainers.image.source https://github.com/mmorejon/microservices-docker-go-mongodb 21 | # import the user and group files from the builder 22 | COPY --from=builder /etc/passwd /etc/passwd 23 | # copy the static executable 24 | COPY --from=builder --chown=elf:1000 /go/bin/cinema-movies /cinema-movies 25 | # use a non-root user 26 | USER elf 27 | # run app 28 | ENTRYPOINT ["./cinema-movies"] 29 | -------------------------------------------------------------------------------- /bookings/Dockerfile: -------------------------------------------------------------------------------- 1 | # base image 2 | FROM golang:1.19.3-alpine AS builder 3 | # create appuser. 4 | RUN adduser -D -g '' elf 5 | # create workspace 6 | WORKDIR /opt/app/ 7 | COPY go.mod go.sum ./ 8 | # fetch dependancies 9 | RUN go mod download && \ 10 | go mod verify 11 | # copy the source code as the last step 12 | COPY . . 13 | # build binary 14 | RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o /go/bin/cinema-bookins ./cmd/app 15 | 16 | 17 | # build a small image 18 | FROM alpine:3.17.3 19 | LABEL language="golang" 20 | LABEL org.opencontainers.image.source https://github.com/mmorejon/microservices-docker-go-mongodb 21 | # import the user and group files from the builder 22 | COPY --from=builder /etc/passwd /etc/passwd 23 | # copy the static executable 24 | COPY --from=builder --chown=elf:1000 /go/bin/cinema-bookins /cinema-bookins 25 | # use a non-root user 26 | USER elf 27 | # run app 28 | ENTRYPOINT ["./cinema-bookins"] 29 | -------------------------------------------------------------------------------- /website/ui/html/movies/list.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 | {{range .Movies}} 10 |
11 |
12 |
13 |

{{.Title}}

14 |
15 |
16 | View 17 |
18 |
19 |
20 |
21 |
22 | {{end}} 23 |
24 | 25 |
26 |
27 | 28 | {{end}} -------------------------------------------------------------------------------- /showtimes/Dockerfile: -------------------------------------------------------------------------------- 1 | # base image 2 | FROM golang:1.19.3-alpine AS builder 3 | # create appuser. 4 | RUN adduser -D -g '' elf 5 | # create workspace 6 | WORKDIR /opt/app/ 7 | COPY go.mod go.sum ./ 8 | # fetch dependancies 9 | RUN go mod download && \ 10 | go mod verify 11 | # copy the source code as the last step 12 | COPY . . 13 | # build binary 14 | RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o /go/bin/cinema-showtimes ./cmd/app 15 | 16 | 17 | # build a small image 18 | FROM alpine:3.17.3 19 | LABEL language="golang" 20 | LABEL org.opencontainers.image.source https://github.com/mmorejon/microservices-docker-go-mongodb 21 | # import the user and group files from the builder 22 | COPY --from=builder /etc/passwd /etc/passwd 23 | # copy the static executable 24 | COPY --from=builder --chown=elf:1000 /go/bin/cinema-showtimes /cinema-showtimes 25 | # use a non-root user 26 | USER elf 27 | # run app 28 | ENTRYPOINT ["./cinema-showtimes"] 29 | -------------------------------------------------------------------------------- /website/ui/html/showtimes/list.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 | {{range .ShowTimes}} 10 |
11 |
12 |
13 |

{{.Date}}

14 |
15 |
16 | View 17 |
18 |
19 |
20 |
21 |
22 | {{end}} 23 |
24 | 25 |
26 |
27 | 28 | {{end}} -------------------------------------------------------------------------------- /website/ui/html/users/list.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 | {{range .Users}} 10 |
11 |
12 |
13 |

{{.Name}} {{.LastName}}

14 |
15 |
16 | View 17 |
18 |
19 |
20 |
21 |
22 | {{end}} 23 |
24 | 25 |
26 |
27 | 28 | {{end}} -------------------------------------------------------------------------------- /timoni/website/templates/ingress.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | netv1 "k8s.io/api/networking/v1" 5 | ) 6 | 7 | #Ingress: netv1.#Ingress & { 8 | _config: #Config 9 | apiVersion: "networking.k8s.io/v1" 10 | kind: "Ingress" 11 | metadata: _config.metadata 12 | if _config.ingress.annotations != _|_ { 13 | metadata: annotations: _config.ingress.annotations 14 | } 15 | spec: netv1.#IngressSpec & { 16 | rules: [{ 17 | host: _config.ingress.host 18 | http: { 19 | paths: [{ 20 | pathType: "Prefix" 21 | path: "/" 22 | backend: service: { 23 | name: _config.metadata.name 24 | port: name: "http" 25 | } 26 | }] 27 | } 28 | }] 29 | if _config.ingress.tls { 30 | tls: [{ 31 | hosts: [_config.ingress.host] 32 | secretName: "\(_config.metadata.name)-cert" 33 | }] 34 | } 35 | if _config.ingress.className != _|_ { 36 | ingressClassName: _config.ingress.className 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/discovery/v1/well_known_labels_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/discovery/v1 4 | 5 | package v1 6 | 7 | // LabelServiceName is used to indicate the name of a Kubernetes service. 8 | #LabelServiceName: "kubernetes.io/service-name" 9 | 10 | // LabelManagedBy is used to indicate the controller or entity that manages 11 | // an EndpointSlice. This label aims to enable different EndpointSlice 12 | // objects to be managed by different controllers or entities within the 13 | // same cluster. It is highly recommended to configure this label for all 14 | // EndpointSlices. 15 | #LabelManagedBy: "endpointslice.kubernetes.io/managed-by" 16 | 17 | // LabelSkipMirror can be set to true on an Endpoints resource to indicate 18 | // that the EndpointSliceMirroring controller should not mirror this 19 | // resource with EndpointSlices. 20 | #LabelSkipMirror: "endpointslice.kubernetes.io/skip-mirror" 21 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/discovery/v1/well_known_labels_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/discovery/v1 4 | 5 | package v1 6 | 7 | // LabelServiceName is used to indicate the name of a Kubernetes service. 8 | #LabelServiceName: "kubernetes.io/service-name" 9 | 10 | // LabelManagedBy is used to indicate the controller or entity that manages 11 | // an EndpointSlice. This label aims to enable different EndpointSlice 12 | // objects to be managed by different controllers or entities within the 13 | // same cluster. It is highly recommended to configure this label for all 14 | // EndpointSlices. 15 | #LabelManagedBy: "endpointslice.kubernetes.io/managed-by" 16 | 17 | // LabelSkipMirror can be set to true on an Endpoints resource to indicate 18 | // that the EndpointSliceMirroring controller should not mirror this 19 | // resource with EndpointSlices. 20 | #LabelSkipMirror: "endpointslice.kubernetes.io/skip-mirror" 21 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/discovery/v1/well_known_labels_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/discovery/v1 4 | 5 | package v1 6 | 7 | // LabelServiceName is used to indicate the name of a Kubernetes service. 8 | #LabelServiceName: "kubernetes.io/service-name" 9 | 10 | // LabelManagedBy is used to indicate the controller or entity that manages 11 | // an EndpointSlice. This label aims to enable different EndpointSlice 12 | // objects to be managed by different controllers or entities within the 13 | // same cluster. It is highly recommended to configure this label for all 14 | // EndpointSlices. 15 | #LabelManagedBy: "endpointslice.kubernetes.io/managed-by" 16 | 17 | // LabelSkipMirror can be set to true on an Endpoints resource to indicate 18 | // that the EndpointSliceMirroring controller should not mirror this 19 | // resource with EndpointSlices. 20 | #LabelSkipMirror: "endpointslice.kubernetes.io/skip-mirror" 21 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/codec_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // codec binds an encoder and decoder. 8 | _#codec: { 9 | Encoder: #Encoder 10 | Decoder: #Decoder 11 | } 12 | 13 | // NoopEncoder converts an Decoder to a Serializer or Codec for code that expects them but only uses decoding. 14 | #NoopEncoder: { 15 | Decoder: #Decoder 16 | } 17 | 18 | _#noopEncoderIdentifier: #Identifier & "noop" 19 | 20 | // NoopDecoder converts an Encoder to a Serializer or Codec for code that expects them but only uses encoding. 21 | #NoopDecoder: { 22 | Encoder: #Encoder 23 | } 24 | 25 | _#base64Serializer: { 26 | Encoder: #Encoder 27 | Decoder: #Decoder 28 | } 29 | 30 | _#internalGroupVersionerIdentifier: "internal" 31 | _#disabledGroupVersionerIdentifier: "disabled" 32 | 33 | _#internalGroupVersioner: { 34 | } 35 | 36 | _#disabledGroupVersioner: { 37 | } 38 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/codec_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // codec binds an encoder and decoder. 8 | _#codec: { 9 | Encoder: #Encoder 10 | Decoder: #Decoder 11 | } 12 | 13 | // NoopEncoder converts an Decoder to a Serializer or Codec for code that expects them but only uses decoding. 14 | #NoopEncoder: { 15 | Decoder: #Decoder 16 | } 17 | 18 | _#noopEncoderIdentifier: #Identifier & "noop" 19 | 20 | // NoopDecoder converts an Encoder to a Serializer or Codec for code that expects them but only uses encoding. 21 | #NoopDecoder: { 22 | Encoder: #Encoder 23 | } 24 | 25 | _#base64Serializer: { 26 | Encoder: #Encoder 27 | Decoder: #Decoder 28 | } 29 | 30 | _#internalGroupVersionerIdentifier: "internal" 31 | _#disabledGroupVersionerIdentifier: "disabled" 32 | 33 | _#internalGroupVersioner: { 34 | } 35 | 36 | _#disabledGroupVersioner: { 37 | } 38 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/codec_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | package runtime 6 | 7 | // codec binds an encoder and decoder. 8 | _#codec: { 9 | Encoder: #Encoder 10 | Decoder: #Decoder 11 | } 12 | 13 | // NoopEncoder converts an Decoder to a Serializer or Codec for code that expects them but only uses decoding. 14 | #NoopEncoder: { 15 | Decoder: #Decoder 16 | } 17 | 18 | _#noopEncoderIdentifier: #Identifier & "noop" 19 | 20 | // NoopDecoder converts an Encoder to a Serializer or Codec for code that expects them but only uses encoding. 21 | #NoopDecoder: { 22 | Encoder: #Encoder 23 | } 24 | 25 | _#base64Serializer: { 26 | Encoder: #Encoder 27 | Decoder: #Decoder 28 | } 29 | 30 | _#internalGroupVersionerIdentifier: "internal" 31 | _#disabledGroupVersionerIdentifier: "disabled" 32 | 33 | _#internalGroupVersioner: { 34 | } 35 | 36 | _#disabledGroupVersioner: { 37 | } 38 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Timestamp is a struct that is equivalent to Time, but intended for 8 | // protobuf marshalling/unmarshalling. It is generated into a serialization 9 | // that matches Time. Do not use in Go structs. 10 | #Timestamp: { 11 | // Represents seconds of UTC time since Unix epoch 12 | // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 13 | // 9999-12-31T23:59:59Z inclusive. 14 | seconds: int64 @go(Seconds) @protobuf(1,varint,opt) 15 | 16 | // Non-negative fractions of a second at nanosecond resolution. Negative 17 | // second values with fractions must still have non-negative nanos values 18 | // that count forward in time. Must be from 0 to 999,999,999 19 | // inclusive. This field may be limited in precision depending on context. 20 | nanos: int32 @go(Nanos) @protobuf(2,varint,opt) 21 | } 22 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Timestamp is a struct that is equivalent to Time, but intended for 8 | // protobuf marshalling/unmarshalling. It is generated into a serialization 9 | // that matches Time. Do not use in Go structs. 10 | #Timestamp: { 11 | // Represents seconds of UTC time since Unix epoch 12 | // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 13 | // 9999-12-31T23:59:59Z inclusive. 14 | seconds: int64 @go(Seconds) @protobuf(1,varint,opt) 15 | 16 | // Non-negative fractions of a second at nanosecond resolution. Negative 17 | // second values with fractions must still have non-negative nanos values 18 | // that count forward in time. Must be from 0 to 999,999,999 19 | // inclusive. This field may be limited in precision depending on context. 20 | nanos: int32 @go(Nanos) @protobuf(2,varint,opt) 21 | } 22 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/time_proto_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // Timestamp is a struct that is equivalent to Time, but intended for 8 | // protobuf marshalling/unmarshalling. It is generated into a serialization 9 | // that matches Time. Do not use in Go structs. 10 | #Timestamp: { 11 | // Represents seconds of UTC time since Unix epoch 12 | // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 13 | // 9999-12-31T23:59:59Z inclusive. 14 | seconds: int64 @go(Seconds) @protobuf(1,varint,opt) 15 | 16 | // Non-negative fractions of a second at nanosecond resolution. Negative 17 | // second values with fractions must still have non-negative nanos values 18 | // that count forward in time. Must be from 0 to 999,999,999 19 | // inclusive. This field may be limited in precision depending on context. 20 | nanos: int32 @go(Nanos) @protobuf(2,varint,opt) 21 | } 22 | -------------------------------------------------------------------------------- /website/ui/html/bookings/list.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 | {{range .BookingsData}} 10 |
11 |
12 |
13 |

{{.UserFullName}}

14 |

{{.ShowTimeDate}}

15 |
16 |
17 | View 18 |
19 |
20 |
21 |
22 |
23 | {{end}} 24 |
25 | 26 |
27 |
28 | 29 | {{end}} -------------------------------------------------------------------------------- /website/Dockerfile: -------------------------------------------------------------------------------- 1 | # base image 2 | FROM golang:1.19.3-alpine AS builder 3 | # create appuser. 4 | RUN adduser -D -g '' elf 5 | # create workspace 6 | WORKDIR /opt/web/ 7 | COPY go.mod go.sum ./ 8 | # fetch dependancies 9 | RUN go mod download && \ 10 | go mod verify 11 | # copy the source code as the last step 12 | COPY . . 13 | # build binary 14 | RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -a -installsuffix cgo -o /go/bin/cinema-website ./cmd/web 15 | 16 | 17 | # build a small image 18 | FROM alpine:3.17.3 19 | LABEL language="golang" 20 | LABEL org.opencontainers.image.source https://github.com/mmorejon/microservices-docker-go-mongodb 21 | # import the user and group files from the builder 22 | COPY --from=builder /etc/passwd /etc/passwd 23 | # create workspace 24 | WORKDIR /opt/web/ 25 | # copy the static executable 26 | COPY --from=builder --chown=elf:1000 /go/bin/cinema-website cinema-website 27 | # copy static files 28 | COPY ./ui ui 29 | # use a non-root user 30 | USER elf 31 | # run app 32 | ENTRYPOINT ["./cinema-website"] 33 | -------------------------------------------------------------------------------- /charts/cinema/charts/users/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.autoscaling.enabled }} 2 | apiVersion: autoscaling/v2beta1 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | name: {{ include "users.fullname" . }} 6 | labels: 7 | {{- include "users.labels" . | nindent 4 }} 8 | spec: 9 | scaleTargetRef: 10 | apiVersion: apps/v1 11 | kind: Deployment 12 | name: {{ include "users.fullname" . }} 13 | minReplicas: {{ .Values.autoscaling.minReplicas }} 14 | maxReplicas: {{ .Values.autoscaling.maxReplicas }} 15 | metrics: 16 | {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} 21 | {{- end }} 22 | {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} 23 | - type: Resource 24 | resource: 25 | name: memory 26 | targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} 27 | {{- end }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/watch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | import ( 8 | "k8s.io/apimachinery/pkg/runtime" 9 | "k8s.io/apimachinery/pkg/watch" 10 | ) 11 | 12 | // Event represents a single event to a watched resource. 13 | // 14 | // +protobuf=true 15 | // +k8s:deepcopy-gen=true 16 | // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 17 | #WatchEvent: { 18 | type: string @go(Type) @protobuf(1,bytes,opt) 19 | 20 | // Object is: 21 | // * If Type is Added or Modified: the new state of the object. 22 | // * If Type is Deleted: the state of the object immediately before deletion. 23 | // * If Type is Error: *Status is recommended; other types may make sense 24 | // depending on context. 25 | object: runtime.#RawExtension @go(Object) @protobuf(2,bytes,opt) 26 | } 27 | 28 | // InternalEvent makes watch.Event versioned 29 | // +protobuf=false 30 | #InternalEvent: watch.#Event 31 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.autoscaling.enabled }} 2 | apiVersion: autoscaling/v2beta1 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | name: {{ include "movies.fullname" . }} 6 | labels: 7 | {{- include "movies.labels" . | nindent 4 }} 8 | spec: 9 | scaleTargetRef: 10 | apiVersion: apps/v1 11 | kind: Deployment 12 | name: {{ include "movies.fullname" . }} 13 | minReplicas: {{ .Values.autoscaling.minReplicas }} 14 | maxReplicas: {{ .Values.autoscaling.maxReplicas }} 15 | metrics: 16 | {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} 21 | {{- end }} 22 | {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} 23 | - type: Resource 24 | resource: 25 | name: memory 26 | targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} 27 | {{- end }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/watch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | import ( 8 | "k8s.io/apimachinery/pkg/runtime" 9 | "k8s.io/apimachinery/pkg/watch" 10 | ) 11 | 12 | // Event represents a single event to a watched resource. 13 | // 14 | // +protobuf=true 15 | // +k8s:deepcopy-gen=true 16 | // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 17 | #WatchEvent: { 18 | type: string @go(Type) @protobuf(1,bytes,opt) 19 | 20 | // Object is: 21 | // * If Type is Added or Modified: the new state of the object. 22 | // * If Type is Deleted: the state of the object immediately before deletion. 23 | // * If Type is Error: *Status is recommended; other types may make sense 24 | // depending on context. 25 | object: runtime.#RawExtension @go(Object) @protobuf(2,bytes,opt) 26 | } 27 | 28 | // InternalEvent makes watch.Event versioned 29 | // +protobuf=false 30 | #InternalEvent: watch.#Event 31 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/watch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | import ( 8 | "k8s.io/apimachinery/pkg/runtime" 9 | "k8s.io/apimachinery/pkg/watch" 10 | ) 11 | 12 | // Event represents a single event to a watched resource. 13 | // 14 | // +protobuf=true 15 | // +k8s:deepcopy-gen=true 16 | // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object 17 | #WatchEvent: { 18 | type: string @go(Type) @protobuf(1,bytes,opt) 19 | 20 | // Object is: 21 | // * If Type is Added or Modified: the new state of the object. 22 | // * If Type is Deleted: the state of the object immediately before deletion. 23 | // * If Type is Error: *Status is recommended; other types may make sense 24 | // depending on context. 25 | object: runtime.#RawExtension @go(Object) @protobuf(2,bytes,opt) 26 | } 27 | 28 | // InternalEvent makes watch.Event versioned 29 | // +protobuf=false 30 | #InternalEvent: watch.#Event 31 | -------------------------------------------------------------------------------- /charts/cinema/charts/bookings/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.autoscaling.enabled }} 2 | apiVersion: autoscaling/v2beta1 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | name: {{ include "bookings.fullname" . }} 6 | labels: 7 | {{- include "bookings.labels" . | nindent 4 }} 8 | spec: 9 | scaleTargetRef: 10 | apiVersion: apps/v1 11 | kind: Deployment 12 | name: {{ include "bookings.fullname" . }} 13 | minReplicas: {{ .Values.autoscaling.minReplicas }} 14 | maxReplicas: {{ .Values.autoscaling.maxReplicas }} 15 | metrics: 16 | {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} 21 | {{- end }} 22 | {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} 23 | - type: Resource 24 | resource: 25 | name: memory 26 | targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} 27 | {{- end }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.autoscaling.enabled }} 2 | apiVersion: autoscaling/v2beta1 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | name: {{ include "website.fullname" . }} 6 | labels: 7 | {{- include "website.labels" . | nindent 4 }} 8 | spec: 9 | scaleTargetRef: 10 | apiVersion: apps/v1 11 | kind: Deployment 12 | name: {{ include "website.fullname" . }} 13 | minReplicas: {{ .Values.autoscaling.minReplicas }} 14 | maxReplicas: {{ .Values.autoscaling.maxReplicas }} 15 | metrics: 16 | {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} 21 | {{- end }} 22 | {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} 23 | - type: Resource 24 | resource: 25 | name: memory 26 | targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} 27 | {{- end }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /charts/cinema/charts/showtimes/templates/hpa.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.autoscaling.enabled }} 2 | apiVersion: autoscaling/v2beta1 3 | kind: HorizontalPodAutoscaler 4 | metadata: 5 | name: {{ include "showtimes.fullname" . }} 6 | labels: 7 | {{- include "showtimes.labels" . | nindent 4 }} 8 | spec: 9 | scaleTargetRef: 10 | apiVersion: apps/v1 11 | kind: Deployment 12 | name: {{ include "showtimes.fullname" . }} 13 | minReplicas: {{ .Values.autoscaling.minReplicas }} 14 | maxReplicas: {{ .Values.autoscaling.maxReplicas }} 15 | metrics: 16 | {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} 17 | - type: Resource 18 | resource: 19 | name: cpu 20 | targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} 21 | {{- end }} 22 | {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} 23 | - type: Resource 24 | resource: 25 | name: memory 26 | targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} 27 | {{- end }} 28 | {{- end }} 29 | -------------------------------------------------------------------------------- /website/ui/html/showtimes/view.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 |
13 | Date: 14 | {{.ShowTime.Date}} 15 |
16 |
17 | Movies: 18 | {{.Movies}} 19 |
20 |
21 |
22 |
23 |
24 | 25 |
26 |
27 | 28 | {{end}} -------------------------------------------------------------------------------- /timoni/api/debug_tool.cue: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "tool/cli" 5 | "encoding/yaml" 6 | "text/tabwriter" 7 | ) 8 | 9 | _resources: timoni.apply.app 10 | 11 | // The build command generates the Kubernetes manifests and prints the multi-docs YAML to stdout. 12 | // Example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. 13 | command: build: { 14 | task: print: cli.Print & { 15 | text: yaml.MarshalStream(_resources) 16 | } 17 | } 18 | 19 | // The ls command prints a table with the Kubernetes resources kind, namespace, name and version. 20 | // Example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 ls'. 21 | command: ls: { 22 | task: print: cli.Print & { 23 | text: tabwriter.Write([ 24 | "RESOURCE \tAPI VERSION", 25 | for r in _resources { 26 | if r.metadata.namespace == _|_ { 27 | "\(r.kind)/\(r.metadata.name) \t\(r.apiVersion)" 28 | } 29 | if r.metadata.namespace != _|_ { 30 | "\(r.kind)/\(r.metadata.namespace)/\(r.metadata.name) \t\(r.apiVersion)" 31 | } 32 | }, 33 | ]) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /timoni/api/values.cue: -------------------------------------------------------------------------------- 1 | // Code generated by timoni. 2 | // Note that this file must have no imports and all values must be concrete. 3 | 4 | @if(!debug) 5 | 6 | package main 7 | 8 | // Defaults 9 | values: { 10 | //bookings 11 | image: { 12 | repository: "ghcr.io/mmorejon/cinema-bookings" 13 | digest: "sha256:9b51714509861b1dad066f56f1c1e5387f20828b113c6d557761fa5b11eef858" 14 | tag: "v2.2.2" 15 | } 16 | //movies 17 | // image: { 18 | // repository: "ghcr.io/mmorejon/cinema-movies" 19 | // digest: "sha256:6f15801d3fa8fbfa58b6718851c28841e010935c205b5770c7deb949fc2e2e25" 20 | // tag: "v2.2.2" 21 | // } 22 | // showtimes 23 | // image: { 24 | // repository: "ghcr.io/mmorejon/cinema-showtimes" 25 | // digest: "sha256:70d087aaf0e888310cfb585eb81e308721e38bb96819e2908358131be1fc2dc8" 26 | // tag: "v2.2.2" 27 | // } 28 | // users 29 | // image: { 30 | // repository: "ghcr.io/mmorejon/cinema-users" 31 | // digest: "sha256:3a1e8fd1f3cb832981bcadb3fff056eb0a2300cf7cb6bf94460c6bccdd6743ed" 32 | // tag: "v2.2.2" 33 | // } 34 | } 35 | -------------------------------------------------------------------------------- /timoni/mongodb/debug_tool.cue: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "tool/cli" 5 | "encoding/yaml" 6 | "text/tabwriter" 7 | ) 8 | 9 | _resources: timoni.apply.app 10 | 11 | // The build command generates the Kubernetes manifests and prints the multi-docs YAML to stdout. 12 | // Example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. 13 | command: build: { 14 | task: print: cli.Print & { 15 | text: yaml.MarshalStream(_resources) 16 | } 17 | } 18 | 19 | // The ls command prints a table with the Kubernetes resources kind, namespace, name and version. 20 | // Example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 ls'. 21 | command: ls: { 22 | task: print: cli.Print & { 23 | text: tabwriter.Write([ 24 | "RESOURCE \tAPI VERSION", 25 | for r in _resources { 26 | if r.metadata.namespace == _|_ { 27 | "\(r.kind)/\(r.metadata.name) \t\(r.apiVersion)" 28 | } 29 | if r.metadata.namespace != _|_ { 30 | "\(r.kind)/\(r.metadata.namespace)/\(r.metadata.name) \t\(r.apiVersion)" 31 | } 32 | }, 33 | ]) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /timoni/website/debug_tool.cue: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "tool/cli" 5 | "encoding/yaml" 6 | "text/tabwriter" 7 | ) 8 | 9 | _resources: timoni.apply.app 10 | 11 | // The build command generates the Kubernetes manifests and prints the multi-docs YAML to stdout. 12 | // Example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 build'. 13 | command: build: { 14 | task: print: cli.Print & { 15 | text: yaml.MarshalStream(_resources) 16 | } 17 | } 18 | 19 | // The ls command prints a table with the Kubernetes resources kind, namespace, name and version. 20 | // Example 'cue cmd -t debug -t name=test -t namespace=test -t mv=1.0.0 -t kv=1.28.0 ls'. 21 | command: ls: { 22 | task: print: cli.Print & { 23 | text: tabwriter.Write([ 24 | "RESOURCE \tAPI VERSION", 25 | for r in _resources { 26 | if r.metadata.namespace == _|_ { 27 | "\(r.kind)/\(r.metadata.name) \t\(r.apiVersion)" 28 | } 29 | if r.metadata.namespace != _|_ { 30 | "\(r.kind)/\(r.metadata.namespace)/\(r.metadata.name) \t\(r.apiVersion)" 31 | } 32 | }, 33 | ]) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /website/ui/html/bookings/view.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 |
13 | Full Username: 14 | {{.BookingData.UserFullName}} 15 |
16 |
17 | ShowTime Date: 18 | {{.BookingData.ShowTimeDate}} 19 |
20 |
21 |
22 |
23 |
24 | 25 |
26 |
27 | 28 | {{end}} -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/amount_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | // Scale is used for getting and setting the base-10 scaled value. 8 | // Base-2 scales are omitted for mathematical simplicity. 9 | // See Quantity.ScaledValue for more details. 10 | #Scale: int32 // #enumScale 11 | 12 | #enumScale: 13 | #Nano | 14 | #Micro | 15 | #Milli | 16 | #Kilo | 17 | #Mega | 18 | #Giga | 19 | #Tera | 20 | #Peta | 21 | #Exa 22 | 23 | #values_Scale: { 24 | Nano: #Nano 25 | Micro: #Micro 26 | Milli: #Milli 27 | Kilo: #Kilo 28 | Mega: #Mega 29 | Giga: #Giga 30 | Tera: #Tera 31 | Peta: #Peta 32 | Exa: #Exa 33 | } 34 | 35 | #Nano: #Scale & -9 36 | #Micro: #Scale & -6 37 | #Milli: #Scale & -3 38 | #Kilo: #Scale & 3 39 | #Mega: #Scale & 6 40 | #Giga: #Scale & 9 41 | #Tera: #Scale & 12 42 | #Peta: #Scale & 15 43 | #Exa: #Scale & 18 44 | 45 | // infDecAmount implements common operations over an inf.Dec that are specific to the quantity 46 | // representation. 47 | _#infDecAmount: string 48 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/amount_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | // Scale is used for getting and setting the base-10 scaled value. 8 | // Base-2 scales are omitted for mathematical simplicity. 9 | // See Quantity.ScaledValue for more details. 10 | #Scale: int32 // #enumScale 11 | 12 | #enumScale: 13 | #Nano | 14 | #Micro | 15 | #Milli | 16 | #Kilo | 17 | #Mega | 18 | #Giga | 19 | #Tera | 20 | #Peta | 21 | #Exa 22 | 23 | #values_Scale: { 24 | Nano: #Nano 25 | Micro: #Micro 26 | Milli: #Milli 27 | Kilo: #Kilo 28 | Mega: #Mega 29 | Giga: #Giga 30 | Tera: #Tera 31 | Peta: #Peta 32 | Exa: #Exa 33 | } 34 | 35 | #Nano: #Scale & -9 36 | #Micro: #Scale & -6 37 | #Milli: #Scale & -3 38 | #Kilo: #Scale & 3 39 | #Mega: #Scale & 6 40 | #Giga: #Scale & 9 41 | #Tera: #Scale & 12 42 | #Peta: #Scale & 15 43 | #Exa: #Scale & 18 44 | 45 | // infDecAmount implements common operations over an inf.Dec that are specific to the quantity 46 | // representation. 47 | _#infDecAmount: string 48 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/api/resource/amount_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/api/resource 4 | 5 | package resource 6 | 7 | // Scale is used for getting and setting the base-10 scaled value. 8 | // Base-2 scales are omitted for mathematical simplicity. 9 | // See Quantity.ScaledValue for more details. 10 | #Scale: int32 // #enumScale 11 | 12 | #enumScale: 13 | #Nano | 14 | #Micro | 15 | #Milli | 16 | #Kilo | 17 | #Mega | 18 | #Giga | 19 | #Tera | 20 | #Peta | 21 | #Exa 22 | 23 | #values_Scale: { 24 | Nano: #Nano 25 | Micro: #Micro 26 | Milli: #Milli 27 | Kilo: #Kilo 28 | Mega: #Mega 29 | Giga: #Giga 30 | Tera: #Tera 31 | Peta: #Peta 32 | Exa: #Exa 33 | } 34 | 35 | #Nano: #Scale & -9 36 | #Micro: #Scale & -6 37 | #Milli: #Scale & -3 38 | #Kilo: #Scale & 3 39 | #Mega: #Scale & 6 40 | #Giga: #Scale & 9 41 | #Tera: #Scale & 12 42 | #Peta: #Scale & 15 43 | #Exa: #Scale & 18 44 | 45 | // infDecAmount implements common operations over an inf.Dec that are specific to the quantity 46 | // representation. 47 | _#infDecAmount: string 48 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/pkg/timoni.sh/core/v1alpha1/selector.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | import "strings" 7 | 8 | // Selector defines the schema for Kubernetes Pod label selector used in Deployments, Services, Jobs, etc. 9 | #Selector: { 10 | // Name must be unique within a namespace. Is required when creating resources. 11 | // Name is primarily intended for creation idempotence and configuration definition. 12 | // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names 13 | #Name!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MinRunes(1) & strings.MaxRunes(63) 14 | 15 | // Map of string keys and values that can be used to organize and categorize (scope and select) objects. 16 | // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels 17 | labels: {[string & =~"^(([A-Za-z0-9][-A-Za-z0-9_./]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)]: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)} 18 | 19 | // Standard Kubernetes label: app name. 20 | labels: "app.kubernetes.io/name": #Name 21 | } 22 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/pkg/timoni.sh/core/v1alpha1/selector.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | import "strings" 7 | 8 | // Selector defines the schema for Kubernetes Pod label selector used in Deployments, Services, Jobs, etc. 9 | #Selector: { 10 | // Name must be unique within a namespace. Is required when creating resources. 11 | // Name is primarily intended for creation idempotence and configuration definition. 12 | // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names 13 | #Name!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MinRunes(1) & strings.MaxRunes(63) 14 | 15 | // Map of string keys and values that can be used to organize and categorize (scope and select) objects. 16 | // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels 17 | labels: {[string & =~"^(([A-Za-z0-9][-A-Za-z0-9_./]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)]: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)} 18 | 19 | // Standard Kubernetes label: app name. 20 | labels: "app.kubernetes.io/name": #Name 21 | } 22 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/pkg/timoni.sh/core/v1alpha1/selector.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | import "strings" 7 | 8 | // Selector defines the schema for Kubernetes Pod label selector used in Deployments, Services, Jobs, etc. 9 | #Selector: { 10 | // Name must be unique within a namespace. Is required when creating resources. 11 | // Name is primarily intended for creation idempotence and configuration definition. 12 | // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names 13 | #Name!: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MinRunes(1) & strings.MaxRunes(63) 14 | 15 | // Map of string keys and values that can be used to organize and categorize (scope and select) objects. 16 | // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels 17 | labels: {[string & =~"^(([A-Za-z0-9][-A-Za-z0-9_./]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)]: string & =~"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$" & strings.MaxRunes(63)} 18 | 19 | // Standard Kubernetes label: app name. 20 | labels: "app.kubernetes.io/name": #Name 21 | } 22 | -------------------------------------------------------------------------------- /charts/cinema/charts/users/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "users.fullname" . -}} 3 | {{- $svcPort := .Values.service.port -}} 4 | {{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} 5 | apiVersion: networking.k8s.io/v1beta1 6 | {{- else -}} 7 | apiVersion: extensions/v1beta1 8 | {{- end }} 9 | kind: Ingress 10 | metadata: 11 | name: {{ $fullName }} 12 | labels: 13 | {{- include "users.labels" . | nindent 4 }} 14 | {{- with .Values.ingress.annotations }} 15 | annotations: 16 | {{- toYaml . | nindent 4 }} 17 | {{- end }} 18 | spec: 19 | {{- if .Values.ingress.tls }} 20 | tls: 21 | {{- range .Values.ingress.tls }} 22 | - hosts: 23 | {{- range .hosts }} 24 | - {{ . | quote }} 25 | {{- end }} 26 | secretName: {{ .secretName }} 27 | {{- end }} 28 | {{- end }} 29 | rules: 30 | {{- range .Values.ingress.hosts }} 31 | - host: {{ .host | quote }} 32 | http: 33 | paths: 34 | {{- range .paths }} 35 | - path: {{ .path }} 36 | backend: 37 | serviceName: {{ $fullName }} 38 | servicePort: {{ $svcPort }} 39 | {{- end }} 40 | {{- end }} 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "movies.fullname" . -}} 3 | {{- $svcPort := .Values.service.port -}} 4 | {{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} 5 | apiVersion: networking.k8s.io/v1beta1 6 | {{- else -}} 7 | apiVersion: extensions/v1beta1 8 | {{- end }} 9 | kind: Ingress 10 | metadata: 11 | name: {{ $fullName }} 12 | labels: 13 | {{- include "movies.labels" . | nindent 4 }} 14 | {{- with .Values.ingress.annotations }} 15 | annotations: 16 | {{- toYaml . | nindent 4 }} 17 | {{- end }} 18 | spec: 19 | {{- if .Values.ingress.tls }} 20 | tls: 21 | {{- range .Values.ingress.tls }} 22 | - hosts: 23 | {{- range .hosts }} 24 | - {{ . | quote }} 25 | {{- end }} 26 | secretName: {{ .secretName }} 27 | {{- end }} 28 | {{- end }} 29 | rules: 30 | {{- range .Values.ingress.hosts }} 31 | - host: {{ .host | quote }} 32 | http: 33 | paths: 34 | {{- range .paths }} 35 | - path: {{ .path }} 36 | backend: 37 | serviceName: {{ $fullName }} 38 | servicePort: {{ $svcPort }} 39 | {{- end }} 40 | {{- end }} 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "website.fullname" . -}} 3 | {{- $svcPort := .Values.service.port -}} 4 | {{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} 5 | apiVersion: networking.k8s.io/v1beta1 6 | {{- else -}} 7 | apiVersion: extensions/v1beta1 8 | {{- end }} 9 | kind: Ingress 10 | metadata: 11 | name: {{ $fullName }} 12 | labels: 13 | {{- include "website.labels" . | nindent 4 }} 14 | {{- with .Values.ingress.annotations }} 15 | annotations: 16 | {{- toYaml . | nindent 4 }} 17 | {{- end }} 18 | spec: 19 | {{- if .Values.ingress.tls }} 20 | tls: 21 | {{- range .Values.ingress.tls }} 22 | - hosts: 23 | {{- range .hosts }} 24 | - {{ . | quote }} 25 | {{- end }} 26 | secretName: {{ .secretName }} 27 | {{- end }} 28 | {{- end }} 29 | rules: 30 | {{- range .Values.ingress.hosts }} 31 | - host: {{ .host | quote }} 32 | http: 33 | paths: 34 | {{- range .paths }} 35 | - path: {{ .path }} 36 | backend: 37 | serviceName: {{ $fullName }} 38 | servicePort: {{ $svcPort }} 39 | {{- end }} 40 | {{- end }} 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /charts/cinema/charts/bookings/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "bookings.fullname" . -}} 3 | {{- $svcPort := .Values.service.port -}} 4 | {{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} 5 | apiVersion: networking.k8s.io/v1beta1 6 | {{- else -}} 7 | apiVersion: extensions/v1beta1 8 | {{- end }} 9 | kind: Ingress 10 | metadata: 11 | name: {{ $fullName }} 12 | labels: 13 | {{- include "bookings.labels" . | nindent 4 }} 14 | {{- with .Values.ingress.annotations }} 15 | annotations: 16 | {{- toYaml . | nindent 4 }} 17 | {{- end }} 18 | spec: 19 | {{- if .Values.ingress.tls }} 20 | tls: 21 | {{- range .Values.ingress.tls }} 22 | - hosts: 23 | {{- range .hosts }} 24 | - {{ . | quote }} 25 | {{- end }} 26 | secretName: {{ .secretName }} 27 | {{- end }} 28 | {{- end }} 29 | rules: 30 | {{- range .Values.ingress.hosts }} 31 | - host: {{ .host | quote }} 32 | http: 33 | paths: 34 | {{- range .paths }} 35 | - path: {{ .path }} 36 | backend: 37 | serviceName: {{ $fullName }} 38 | servicePort: {{ $svcPort }} 39 | {{- end }} 40 | {{- end }} 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /charts/cinema/charts/showtimes/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullName := include "showtimes.fullname" . -}} 3 | {{- $svcPort := .Values.service.port -}} 4 | {{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} 5 | apiVersion: networking.k8s.io/v1beta1 6 | {{- else -}} 7 | apiVersion: extensions/v1beta1 8 | {{- end }} 9 | kind: Ingress 10 | metadata: 11 | name: {{ $fullName }} 12 | labels: 13 | {{- include "showtimes.labels" . | nindent 4 }} 14 | {{- with .Values.ingress.annotations }} 15 | annotations: 16 | {{- toYaml . | nindent 4 }} 17 | {{- end }} 18 | spec: 19 | {{- if .Values.ingress.tls }} 20 | tls: 21 | {{- range .Values.ingress.tls }} 22 | - hosts: 23 | {{- range .hosts }} 24 | - {{ . | quote }} 25 | {{- end }} 26 | secretName: {{ .secretName }} 27 | {{- end }} 28 | {{- end }} 29 | rules: 30 | {{- range .Values.ingress.hosts }} 31 | - host: {{ .host | quote }} 32 | http: 33 | paths: 34 | {{- range .paths }} 35 | - path: {{ .path }} 36 | backend: 37 | serviceName: {{ $fullName }} 38 | servicePort: {{ $svcPort }} 39 | {{- end }} 40 | {{- end }} 41 | {{- end }} 42 | -------------------------------------------------------------------------------- /website/cmd/web/handlers.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "encoding/json" 5 | "io/ioutil" 6 | "net/http" 7 | "path/filepath" 8 | "text/template" 9 | ) 10 | 11 | func (app *application) home(w http.ResponseWriter, r *http.Request) { 12 | 13 | files := []string{ 14 | "./ui/html/home.page.tmpl", 15 | "./ui/html/base.layout.tmpl", 16 | "./ui/html/footer.partial.tmpl", 17 | } 18 | 19 | ts, err := template.ParseFiles(files...) 20 | if err != nil { 21 | app.errorLog.Println(err.Error()) 22 | http.Error(w, "Internal Server Error", 500) 23 | return 24 | } 25 | 26 | err = ts.Execute(w, nil) 27 | if err != nil { 28 | app.errorLog.Println(err.Error()) 29 | http.Error(w, "Internal Server Error", 500) 30 | } 31 | } 32 | 33 | func (app *application) getAPIContent(url string, templateData interface{}) error { 34 | resp, err := http.Get(url) 35 | if err != nil { 36 | return err 37 | } 38 | defer resp.Body.Close() 39 | 40 | bodyBytes, err := ioutil.ReadAll(resp.Body) 41 | if err != nil { 42 | return err 43 | } 44 | 45 | json.Unmarshal(bodyBytes, templateData) 46 | return nil 47 | } 48 | 49 | func (app *application) static(dir string) http.Handler { 50 | dirCleaned := filepath.Clean(dir) 51 | return http.StripPrefix("/static/", http.FileServer(http.Dir(dirCleaned))) 52 | } 53 | -------------------------------------------------------------------------------- /charts/cinema/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for cinema. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | ### Mongodb values ### 6 | mongodb: 7 | # define if use mongodb dependency 8 | enabled: true 9 | 10 | image: 11 | repository: mongo 12 | tag: 4.2.23 13 | 14 | readinessProbe: 15 | enabled: false 16 | livenessProbe: 17 | enabled: false 18 | 19 | persistence: 20 | mountPath: /data/db 21 | 22 | # Cinema website values 23 | website: 24 | args: 25 | - "-usersAPI" 26 | - "http://cinema-users/api/users/" 27 | - "-moviesAPI" 28 | - "http://cinema-movies/api/movies/" 29 | - "-showtimesAPI" 30 | - "http://cinema-showtimes/api/showtimes/" 31 | - "-bookingsAPI" 32 | - "http://cinema-bookings/api/bookings/" 33 | 34 | # Cinema users values 35 | users: 36 | args: 37 | - "-mongoURI" 38 | - "mongodb://cinema-mongodb:27017/" 39 | 40 | # Cinema movies values 41 | movies: 42 | args: 43 | - "-mongoURI" 44 | - "mongodb://cinema-mongodb:27017/" 45 | 46 | # Cinema showtimes values 47 | showtimes: 48 | args: 49 | - "-mongoURI" 50 | - "mongodb://cinema-mongodb:27017/" 51 | 52 | # Cinema bookings values 53 | bookings: 54 | args: 55 | - "-mongoURI" 56 | - "mongodb://cinema-mongodb:27017/" 57 | -------------------------------------------------------------------------------- /website/ui/html/movies/view.page.tmpl: -------------------------------------------------------------------------------- 1 | {{template "base" .}} 2 | 3 | {{define "main"}} 4 | 5 |
6 |
7 | 8 |
9 |
10 |
11 |
12 |
13 | Title: 14 | {{.Title}} 15 |
16 |
17 | Director: 18 | {{.Director}} 19 |
20 |
21 | Rating: 22 | {{.Rating}} 23 |
24 |
25 |
26 |
27 |
28 | 29 |
30 |
31 | 32 | {{end}} -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/meta_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // TODO: move this, Object, List, and Type to a different package 8 | #ObjectMetaAccessor: _ 9 | 10 | // Object lets you work with object metadata from any of the versioned or 11 | // internal API objects. Attempting to set or retrieve a field on an object that does 12 | // not support that field (Name, UID, Namespace on lists) will be a no-op and return 13 | // a default value. 14 | #Object: _ 15 | 16 | // ListMetaAccessor retrieves the list interface from an object 17 | #ListMetaAccessor: _ 18 | 19 | // Common lets you work with core metadata from any of the versioned or 20 | // internal API objects. Attempting to set or retrieve a field on an object that does 21 | // not support that field will be a no-op and return a default value. 22 | // TODO: move this, and TypeMeta and ListMeta, to a different package 23 | #Common: _ 24 | 25 | // ListInterface lets you work with list metadata from any of the versioned or 26 | // internal API objects. Attempting to set or retrieve a field on an object that does 27 | // not support that field will be a no-op and return a default value. 28 | // TODO: move this, and TypeMeta and ListMeta, to a different package 29 | #ListInterface: _ 30 | 31 | // Type exposes the type and APIVersion of versioned or internal API objects. 32 | // TODO: move this, and TypeMeta and ListMeta, to a different package 33 | #Type: _ 34 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/meta_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // TODO: move this, Object, List, and Type to a different package 8 | #ObjectMetaAccessor: _ 9 | 10 | // Object lets you work with object metadata from any of the versioned or 11 | // internal API objects. Attempting to set or retrieve a field on an object that does 12 | // not support that field (Name, UID, Namespace on lists) will be a no-op and return 13 | // a default value. 14 | #Object: _ 15 | 16 | // ListMetaAccessor retrieves the list interface from an object 17 | #ListMetaAccessor: _ 18 | 19 | // Common lets you work with core metadata from any of the versioned or 20 | // internal API objects. Attempting to set or retrieve a field on an object that does 21 | // not support that field will be a no-op and return a default value. 22 | // TODO: move this, and TypeMeta and ListMeta, to a different package 23 | #Common: _ 24 | 25 | // ListInterface lets you work with list metadata from any of the versioned or 26 | // internal API objects. Attempting to set or retrieve a field on an object that does 27 | // not support that field will be a no-op and return a default value. 28 | // TODO: move this, and TypeMeta and ListMeta, to a different package 29 | #ListInterface: _ 30 | 31 | // Type exposes the type and APIVersion of versioned or internal API objects. 32 | // TODO: move this, and TypeMeta and ListMeta, to a different package 33 | #Type: _ 34 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/apis/meta/v1/meta_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/apis/meta/v1 4 | 5 | package v1 6 | 7 | // TODO: move this, Object, List, and Type to a different package 8 | #ObjectMetaAccessor: _ 9 | 10 | // Object lets you work with object metadata from any of the versioned or 11 | // internal API objects. Attempting to set or retrieve a field on an object that does 12 | // not support that field (Name, UID, Namespace on lists) will be a no-op and return 13 | // a default value. 14 | #Object: _ 15 | 16 | // ListMetaAccessor retrieves the list interface from an object 17 | #ListMetaAccessor: _ 18 | 19 | // Common lets you work with core metadata from any of the versioned or 20 | // internal API objects. Attempting to set or retrieve a field on an object that does 21 | // not support that field will be a no-op and return a default value. 22 | // TODO: move this, and TypeMeta and ListMeta, to a different package 23 | #Common: _ 24 | 25 | // ListInterface lets you work with list metadata from any of the versioned or 26 | // internal API objects. Attempting to set or retrieve a field on an object that does 27 | // not support that field will be a no-op and return a default value. 28 | // TODO: move this, and TypeMeta and ListMeta, to a different package 29 | #ListInterface: _ 30 | 31 | // Type exposes the type and APIVersion of versioned or internal API objects. 32 | // TODO: move this, and TypeMeta and ListMeta, to a different package 33 | #Type: _ 34 | -------------------------------------------------------------------------------- /timoni/mongodb/templates/config.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | timoniv1 "timoni.sh/core/v1alpha1" 6 | ) 7 | 8 | // Config defines the schema and defaults for the Instance values. 9 | #Config: { 10 | // Runtime version info 11 | moduleVersion!: string 12 | kubeVersion!: string 13 | 14 | // Metadata (common to all resources) 15 | metadata: timoniv1.#Metadata & {#Version: moduleVersion} 16 | 17 | // Label selector (common to all resources) 18 | selector: timoniv1.#Selector & {#Name: metadata.name} 19 | 20 | // Deployment 21 | replicas: *1 | int & >0 22 | 23 | // Pod 24 | podAnnotations?: {[ string]: string} 25 | podSecurityContext?: corev1.#PodSecurityContext 26 | imagePullSecrets?: [...corev1.LocalObjectReference] 27 | tolerations?: [ ...corev1.#Toleration] 28 | affinity?: corev1.#Affinity 29 | topologySpreadConstraints?: [...corev1.#TopologySpreadConstraint] 30 | 31 | // Container 32 | image!: timoniv1.#Image 33 | imagePullPolicy: *"IfNotPresent" | string 34 | resources?: corev1.#ResourceRequirements 35 | securityContext?: corev1.#SecurityContext 36 | 37 | // Service 38 | service: port: *27017 | int & >0 & <=65535 39 | 40 | // Test Job 41 | test: { 42 | enabled: *false | bool 43 | } 44 | } 45 | 46 | // Instance takes the config values and outputs the Kubernetes objects. 47 | #Instance: { 48 | config: #Config 49 | 50 | objects: { 51 | sa: #ServiceAccount & {_config: config} 52 | svc: #Service & {_config: config} 53 | deploy: #Deployment & {_config: config} 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /timoni/api/templates/config.cue: -------------------------------------------------------------------------------- 1 | package templates 2 | 3 | import ( 4 | corev1 "k8s.io/api/core/v1" 5 | timoniv1 "timoni.sh/core/v1alpha1" 6 | ) 7 | 8 | // Config defines the schema and defaults for the Instance values. 9 | #Config: { 10 | // Runtime version info 11 | moduleVersion!: string 12 | kubeVersion!: string 13 | 14 | // Metadata (common to all resources) 15 | metadata: timoniv1.#Metadata & {#Version: moduleVersion} 16 | 17 | // Label selector (common to all resources) 18 | selector: timoniv1.#Selector & {#Name: metadata.name} 19 | 20 | // Deployment 21 | replicas: *1 | int & >0 22 | 23 | // Pod 24 | podAnnotations?: {[ string]: string} 25 | podSecurityContext?: corev1.#PodSecurityContext 26 | imagePullSecrets?: [...corev1.LocalObjectReference] 27 | tolerations?: [ ...corev1.#Toleration] 28 | affinity?: corev1.#Affinity 29 | topologySpreadConstraints?: [...corev1.#TopologySpreadConstraint] 30 | 31 | // Container 32 | image!: timoniv1.#Image 33 | imagePullPolicy: *"IfNotPresent" | string 34 | args?: [...string] 35 | resources?: corev1.#ResourceRequirements 36 | securityContext?: corev1.#SecurityContext 37 | 38 | // Service 39 | service: port: *80 | int & >0 & <=65535 40 | 41 | // Test Job 42 | test: { 43 | enabled: *false | bool 44 | } 45 | } 46 | 47 | // Instance takes the config values and outputs the Kubernetes objects. 48 | #Instance: { 49 | config: #Config 50 | 51 | objects: { 52 | sa: #ServiceAccount & {_config: config} 53 | svc: #Service & {_config: config} 54 | deploy: #Deployment & { _config: config } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | import "strings" 7 | 8 | // Image defines the schema for OCI image reference used in Kubernetes PodSpec container image. 9 | #Image: { 10 | 11 | // Repository is the address of a container registry repository. 12 | // An image repository is made up of slash-separated name components, optionally 13 | // prefixed by a registry hostname and port in the format [HOST[:PORT_NUMBER]/]PATH. 14 | repository!: string 15 | 16 | // Tag identifies an image in the repository. 17 | // A tag name may contain lowercase and uppercase characters, digits, underscores, periods and dashes. 18 | // A tag name may not start with a period or a dash and may contain a maximum of 128 characters. 19 | tag!: string & strings.MaxRunes(128) 20 | 21 | // Digest uniquely and immutably identifies an image in the repository. 22 | // Spec: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests. 23 | digest!: string 24 | 25 | // Reference is the image address computed from repository, tag and digest 26 | // in the format [REPOSITORY]:[TAG]@[DIGEST]. 27 | reference: string 28 | 29 | if digest != "" && tag != "" { 30 | reference: "\(repository):\(tag)@\(digest)" 31 | } 32 | 33 | if digest != "" && tag == "" { 34 | reference: "\(repository)@\(digest)" 35 | } 36 | 37 | if digest == "" && tag != "" { 38 | reference: "\(repository):\(tag)" 39 | } 40 | 41 | if digest == "" && tag == "" { 42 | reference: "\(repository):latest" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | import "strings" 7 | 8 | // Image defines the schema for OCI image reference used in Kubernetes PodSpec container image. 9 | #Image: { 10 | 11 | // Repository is the address of a container registry repository. 12 | // An image repository is made up of slash-separated name components, optionally 13 | // prefixed by a registry hostname and port in the format [HOST[:PORT_NUMBER]/]PATH. 14 | repository!: string 15 | 16 | // Tag identifies an image in the repository. 17 | // A tag name may contain lowercase and uppercase characters, digits, underscores, periods and dashes. 18 | // A tag name may not start with a period or a dash and may contain a maximum of 128 characters. 19 | tag!: string & strings.MaxRunes(128) 20 | 21 | // Digest uniquely and immutably identifies an image in the repository. 22 | // Spec: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests. 23 | digest!: string 24 | 25 | // Reference is the image address computed from repository, tag and digest 26 | // in the format [REPOSITORY]:[TAG]@[DIGEST]. 27 | reference: string 28 | 29 | if digest != "" && tag != "" { 30 | reference: "\(repository):\(tag)@\(digest)" 31 | } 32 | 33 | if digest != "" && tag == "" { 34 | reference: "\(repository)@\(digest)" 35 | } 36 | 37 | if digest == "" && tag != "" { 38 | reference: "\(repository):\(tag)" 39 | } 40 | 41 | if digest == "" && tag == "" { 42 | reference: "\(repository):latest" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/pkg/timoni.sh/core/v1alpha1/image.cue: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Stefan Prodan 2 | // SPDX-License-Identifier: Apache-2.0 3 | 4 | package v1alpha1 5 | 6 | import "strings" 7 | 8 | // Image defines the schema for OCI image reference used in Kubernetes PodSpec container image. 9 | #Image: { 10 | 11 | // Repository is the address of a container registry repository. 12 | // An image repository is made up of slash-separated name components, optionally 13 | // prefixed by a registry hostname and port in the format [HOST[:PORT_NUMBER]/]PATH. 14 | repository!: string 15 | 16 | // Tag identifies an image in the repository. 17 | // A tag name may contain lowercase and uppercase characters, digits, underscores, periods and dashes. 18 | // A tag name may not start with a period or a dash and may contain a maximum of 128 characters. 19 | tag!: string & strings.MaxRunes(128) 20 | 21 | // Digest uniquely and immutably identifies an image in the repository. 22 | // Spec: https://github.com/opencontainers/image-spec/blob/main/descriptor.md#digests. 23 | digest!: string 24 | 25 | // Reference is the image address computed from repository, tag and digest 26 | // in the format [REPOSITORY]:[TAG]@[DIGEST]. 27 | reference: string 28 | 29 | if digest != "" && tag != "" { 30 | reference: "\(repository):\(tag)@\(digest)" 31 | } 32 | 33 | if digest != "" && tag == "" { 34 | reference: "\(repository)@\(digest)" 35 | } 36 | 37 | if digest == "" && tag != "" { 38 | reference: "\(repository):\(tag)" 39 | } 40 | 41 | if digest == "" && tag == "" { 42 | reference: "\(repository):latest" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/watch/watch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | import "k8s.io/apimachinery/pkg/runtime" 8 | 9 | // Interface can be implemented by anything that knows how to watch and report changes. 10 | #Interface: _ 11 | 12 | // EventType defines the possible types of events. 13 | #EventType: string // #enumEventType 14 | 15 | #enumEventType: 16 | #Added | 17 | #Modified | 18 | #Deleted | 19 | #Bookmark | 20 | #Error 21 | 22 | #Added: #EventType & "ADDED" 23 | #Modified: #EventType & "MODIFIED" 24 | #Deleted: #EventType & "DELETED" 25 | #Bookmark: #EventType & "BOOKMARK" 26 | #Error: #EventType & "ERROR" 27 | 28 | // Event represents a single event to a watched resource. 29 | // +k8s:deepcopy-gen=true 30 | #Event: { 31 | Type: #EventType 32 | 33 | // Object is: 34 | // * If Type is Added or Modified: the new state of the object. 35 | // * If Type is Deleted: the state of the object immediately before deletion. 36 | // * If Type is Bookmark: the object (instance of a type being watched) where 37 | // only ResourceVersion field is set. On successful restart of watch from a 38 | // bookmark resourceVersion, client is guaranteed to not get repeat event 39 | // nor miss any events. 40 | // * If Type is Error: *api.Status is recommended; other types may make sense 41 | // depending on context. 42 | Object: runtime.#Object 43 | } 44 | 45 | // RaceFreeFakeWatcher lets you test anything that consumes a watch.Interface; threadsafe. 46 | #RaceFreeFakeWatcher: { 47 | Stopped: bool 48 | } 49 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/watch/watch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | import "k8s.io/apimachinery/pkg/runtime" 8 | 9 | // Interface can be implemented by anything that knows how to watch and report changes. 10 | #Interface: _ 11 | 12 | // EventType defines the possible types of events. 13 | #EventType: string // #enumEventType 14 | 15 | #enumEventType: 16 | #Added | 17 | #Modified | 18 | #Deleted | 19 | #Bookmark | 20 | #Error 21 | 22 | #Added: #EventType & "ADDED" 23 | #Modified: #EventType & "MODIFIED" 24 | #Deleted: #EventType & "DELETED" 25 | #Bookmark: #EventType & "BOOKMARK" 26 | #Error: #EventType & "ERROR" 27 | 28 | // Event represents a single event to a watched resource. 29 | // +k8s:deepcopy-gen=true 30 | #Event: { 31 | Type: #EventType 32 | 33 | // Object is: 34 | // * If Type is Added or Modified: the new state of the object. 35 | // * If Type is Deleted: the state of the object immediately before deletion. 36 | // * If Type is Bookmark: the object (instance of a type being watched) where 37 | // only ResourceVersion field is set. On successful restart of watch from a 38 | // bookmark resourceVersion, client is guaranteed to not get repeat event 39 | // nor miss any events. 40 | // * If Type is Error: *api.Status is recommended; other types may make sense 41 | // depending on context. 42 | Object: runtime.#Object 43 | } 44 | 45 | // RaceFreeFakeWatcher lets you test anything that consumes a watch.Interface; threadsafe. 46 | #RaceFreeFakeWatcher: { 47 | Stopped: bool 48 | } 49 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/watch/watch_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/watch 4 | 5 | package watch 6 | 7 | import "k8s.io/apimachinery/pkg/runtime" 8 | 9 | // Interface can be implemented by anything that knows how to watch and report changes. 10 | #Interface: _ 11 | 12 | // EventType defines the possible types of events. 13 | #EventType: string // #enumEventType 14 | 15 | #enumEventType: 16 | #Added | 17 | #Modified | 18 | #Deleted | 19 | #Bookmark | 20 | #Error 21 | 22 | #Added: #EventType & "ADDED" 23 | #Modified: #EventType & "MODIFIED" 24 | #Deleted: #EventType & "DELETED" 25 | #Bookmark: #EventType & "BOOKMARK" 26 | #Error: #EventType & "ERROR" 27 | 28 | // Event represents a single event to a watched resource. 29 | // +k8s:deepcopy-gen=true 30 | #Event: { 31 | Type: #EventType 32 | 33 | // Object is: 34 | // * If Type is Added or Modified: the new state of the object. 35 | // * If Type is Deleted: the state of the object immediately before deletion. 36 | // * If Type is Bookmark: the object (instance of a type being watched) where 37 | // only ResourceVersion field is set. On successful restart of watch from a 38 | // bookmark resourceVersion, client is guaranteed to not get repeat event 39 | // nor miss any events. 40 | // * If Type is Error: *api.Status is recommended; other types may make sense 41 | // depending on context. 42 | Object: runtime.#Object 43 | } 44 | 45 | // RaceFreeFakeWatcher lets you test anything that consumes a watch.Interface; threadsafe. 46 | #RaceFreeFakeWatcher: { 47 | Stopped: bool 48 | } 49 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/types/nodename_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // NodeName is a type that holds a api.Node's Name identifier. 8 | // Being a type captures intent and helps make sure that the node name 9 | // is not confused with similar concepts (the hostname, the cloud provider id, 10 | // the cloud provider name etc) 11 | // 12 | // To clarify the various types: 13 | // 14 | // - Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. 15 | // Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. 16 | // 17 | // - Hostname is the hostname of the local machine (from uname -n). 18 | // However, some components allow the user to pass in a --hostname-override flag, 19 | // which will override this in most places. In the absence of anything more meaningful, 20 | // kubelet will use Hostname as the Node.Name when it creates the Node. 21 | // 22 | // * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId. 23 | // 24 | // For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the 25 | // Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up 26 | // to the cloudprovider how to do this mapping. 27 | // 28 | // For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the 29 | // PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if 30 | // we are using a custom DHCP domain it won't be. 31 | #NodeName: string 32 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/types/nodename_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // NodeName is a type that holds a api.Node's Name identifier. 8 | // Being a type captures intent and helps make sure that the node name 9 | // is not confused with similar concepts (the hostname, the cloud provider id, 10 | // the cloud provider name etc) 11 | // 12 | // To clarify the various types: 13 | // 14 | // - Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. 15 | // Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. 16 | // 17 | // - Hostname is the hostname of the local machine (from uname -n). 18 | // However, some components allow the user to pass in a --hostname-override flag, 19 | // which will override this in most places. In the absence of anything more meaningful, 20 | // kubelet will use Hostname as the Node.Name when it creates the Node. 21 | // 22 | // * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId. 23 | // 24 | // For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the 25 | // Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up 26 | // to the cloudprovider how to do this mapping. 27 | // 28 | // For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the 29 | // PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if 30 | // we are using a custom DHCP domain it won't be. 31 | #NodeName: string 32 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/types/nodename_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/types 4 | 5 | package types 6 | 7 | // NodeName is a type that holds a api.Node's Name identifier. 8 | // Being a type captures intent and helps make sure that the node name 9 | // is not confused with similar concepts (the hostname, the cloud provider id, 10 | // the cloud provider name etc) 11 | // 12 | // To clarify the various types: 13 | // 14 | // - Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. 15 | // Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. 16 | // 17 | // - Hostname is the hostname of the local machine (from uname -n). 18 | // However, some components allow the user to pass in a --hostname-override flag, 19 | // which will override this in most places. In the absence of anything more meaningful, 20 | // kubelet will use Hostname as the Node.Name when it creates the Node. 21 | // 22 | // * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId. 23 | // 24 | // For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the 25 | // Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up 26 | // to the cloudprovider how to do this mapping. 27 | // 28 | // For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the 29 | // PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if 30 | // we are using a custom DHCP domain it won't be. 31 | #NodeName: string 32 | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | // Package runtime includes helper functions for working with API objects 6 | // that follow the kubernetes API object conventions, which are: 7 | // 8 | // 0. Your API objects have a common metadata struct member, TypeMeta. 9 | // 10 | // 1. Your code refers to an internal set of API objects. 11 | // 12 | // 2. In a separate package, you have an external set of API objects. 13 | // 14 | // 3. The external set is considered to be versioned, and no breaking 15 | // changes are ever made to it (fields may be added but not changed 16 | // or removed). 17 | // 18 | // 4. As your api evolves, you'll make an additional versioned package 19 | // with every major change. 20 | // 21 | // 5. Versioned packages have conversion functions which convert to 22 | // and from the internal version. 23 | // 24 | // 6. You'll continue to support older versions according to your 25 | // deprecation policy, and you can easily provide a program/library 26 | // to update old versions into new versions because of 5. 27 | // 28 | // 7. All of your serializations and deserializations are handled in a 29 | // centralized place. 30 | // 31 | // Package runtime provides a conversion helper to make 5 easy, and the 32 | // Encode/Decode/DecodeInto trio to accomplish 7. You can also register 33 | // additional "codecs" which use a version of your choice. It's 34 | // recommended that you register your types with runtime in your 35 | // package's init function. 36 | // 37 | // As a bonus, a few common types useful from all api objects and versions 38 | // are provided in types.go. 39 | package runtime 40 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | // Package runtime includes helper functions for working with API objects 6 | // that follow the kubernetes API object conventions, which are: 7 | // 8 | // 0. Your API objects have a common metadata struct member, TypeMeta. 9 | // 10 | // 1. Your code refers to an internal set of API objects. 11 | // 12 | // 2. In a separate package, you have an external set of API objects. 13 | // 14 | // 3. The external set is considered to be versioned, and no breaking 15 | // changes are ever made to it (fields may be added but not changed 16 | // or removed). 17 | // 18 | // 4. As your api evolves, you'll make an additional versioned package 19 | // with every major change. 20 | // 21 | // 5. Versioned packages have conversion functions which convert to 22 | // and from the internal version. 23 | // 24 | // 6. You'll continue to support older versions according to your 25 | // deprecation policy, and you can easily provide a program/library 26 | // to update old versions into new versions because of 5. 27 | // 28 | // 7. All of your serializations and deserializations are handled in a 29 | // centralized place. 30 | // 31 | // Package runtime provides a conversion helper to make 5 easy, and the 32 | // Encode/Decode/DecodeInto trio to accomplish 7. You can also register 33 | // additional "codecs" which use a version of your choice. It's 34 | // recommended that you register your types with runtime in your 35 | // package's init function. 36 | // 37 | // As a bonus, a few common types useful from all api objects and versions 38 | // are provided in types.go. 39 | package runtime 40 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/apimachinery/pkg/runtime/doc_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/apimachinery/pkg/runtime 4 | 5 | // Package runtime includes helper functions for working with API objects 6 | // that follow the kubernetes API object conventions, which are: 7 | // 8 | // 0. Your API objects have a common metadata struct member, TypeMeta. 9 | // 10 | // 1. Your code refers to an internal set of API objects. 11 | // 12 | // 2. In a separate package, you have an external set of API objects. 13 | // 14 | // 3. The external set is considered to be versioned, and no breaking 15 | // changes are ever made to it (fields may be added but not changed 16 | // or removed). 17 | // 18 | // 4. As your api evolves, you'll make an additional versioned package 19 | // with every major change. 20 | // 21 | // 5. Versioned packages have conversion functions which convert to 22 | // and from the internal version. 23 | // 24 | // 6. You'll continue to support older versions according to your 25 | // deprecation policy, and you can easily provide a program/library 26 | // to update old versions into new versions because of 5. 27 | // 28 | // 7. All of your serializations and deserializations are handled in a 29 | // centralized place. 30 | // 31 | // Package runtime provides a conversion helper to make 5 easy, and the 32 | // Encode/Decode/DecodeInto trio to accomplish 7. You can also register 33 | // additional "codecs" which use a version of your choice. It's 34 | // recommended that you register your types with runtime in your 35 | // package's init function. 36 | // 37 | // As a bonus, a few common types useful from all api objects and versions 38 | // are provided in types.go. 39 | package runtime 40 | -------------------------------------------------------------------------------- /docs/endpoints.md: -------------------------------------------------------------------------------- 1 | # Cinema - Endpoints 2 | 3 | ## User Service 4 | 5 | This service returns information about the users of Cinema. 6 | 7 | | Service | Method | Endpoint | 8 | |---------|--------|----------------| 9 | | List users | `GET` | `/api/users/` | 10 | | Get user by Id | `GET` | `/api/users/{id}` | 11 | | Insert user | `POST` | `/api/users/` | 12 | | Delete user | `DELETE` | `/api/users/{id}` | 13 | 14 | ## Movie Service 15 | 16 | This service is used to get information about a movie. It provides the movie title, rating on a 1-5 scale, director and other information. 17 | 18 | | Service | Method | Endpoint | 19 | |---------|--------|----------------| 20 | | List movies | `GET` | `/api/movies/` | 21 | | Get movie by Id | `GET` | `/api/movies/{id}` | 22 | | Insert movie | `POST` | `/api/movies/` | 23 | | Delete movie | `DELETE` | `/api/movies/{id}` | 24 | 25 | ## Showtimes Service 26 | 27 | This service is used get a information about showtimes playing on a certain date. 28 | 29 | | Service | Method | Endpoint | 30 | |---------|--------|----------------| 31 | | List showtimes | `GET` | `/api/showtimes/` | 32 | | Get showtime by Id | `GET` | `/api/showtimes/{id}` | 33 | | Get showtime by date | `GET` | `/api/showtimes/filter/date/{date}` | 34 | | Insert showtime | `POST` | `/api/showtimes/` | 35 | | Delete showtime | `DELETE` | `/api/showtimes/{id}` | 36 | 37 | ## Booking Service 38 | 39 | Used to lookup booking information for users. 40 | 41 | | Service | Method | Endpoint | 42 | |---------|--------|----------------| 43 | | List bookings | `GET` | `/api/bookings/` | 44 | | Get booking by Id | `GET` | `/api/bookings/{id}` | 45 | | Insert booking | `POST` | `/api/bookings/` | 46 | | Delete booking | `DELETE` | `/api/bookings/{id}` | -------------------------------------------------------------------------------- /timoni/api/cue.mod/gen/k8s.io/api/core/v1/well_known_taints_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | package v1 6 | 7 | // TaintNodeNotReady will be added when node is not ready 8 | // and removed when node becomes ready. 9 | #TaintNodeNotReady: "node.kubernetes.io/not-ready" 10 | 11 | // TaintNodeUnreachable will be added when node becomes unreachable 12 | // (corresponding to NodeReady status ConditionUnknown) 13 | // and removed when node becomes reachable (NodeReady status ConditionTrue). 14 | #TaintNodeUnreachable: "node.kubernetes.io/unreachable" 15 | 16 | // TaintNodeUnschedulable will be added when node becomes unschedulable 17 | // and removed when node becomes schedulable. 18 | #TaintNodeUnschedulable: "node.kubernetes.io/unschedulable" 19 | 20 | // TaintNodeMemoryPressure will be added when node has memory pressure 21 | // and removed when node has enough memory. 22 | #TaintNodeMemoryPressure: "node.kubernetes.io/memory-pressure" 23 | 24 | // TaintNodeDiskPressure will be added when node has disk pressure 25 | // and removed when node has enough disk. 26 | #TaintNodeDiskPressure: "node.kubernetes.io/disk-pressure" 27 | 28 | // TaintNodeNetworkUnavailable will be added when node's network is unavailable 29 | // and removed when network becomes ready. 30 | #TaintNodeNetworkUnavailable: "node.kubernetes.io/network-unavailable" 31 | 32 | // TaintNodePIDPressure will be added when node has pid pressure 33 | // and removed when node has enough pid. 34 | #TaintNodePIDPressure: "node.kubernetes.io/pid-pressure" 35 | 36 | // TaintNodeOutOfService can be added when node is out of service in case of 37 | // a non-graceful shutdown 38 | #TaintNodeOutOfService: "node.kubernetes.io/out-of-service" 39 | -------------------------------------------------------------------------------- /timoni/mongodb/cue.mod/gen/k8s.io/api/core/v1/well_known_taints_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | package v1 6 | 7 | // TaintNodeNotReady will be added when node is not ready 8 | // and removed when node becomes ready. 9 | #TaintNodeNotReady: "node.kubernetes.io/not-ready" 10 | 11 | // TaintNodeUnreachable will be added when node becomes unreachable 12 | // (corresponding to NodeReady status ConditionUnknown) 13 | // and removed when node becomes reachable (NodeReady status ConditionTrue). 14 | #TaintNodeUnreachable: "node.kubernetes.io/unreachable" 15 | 16 | // TaintNodeUnschedulable will be added when node becomes unschedulable 17 | // and removed when node becomes schedulable. 18 | #TaintNodeUnschedulable: "node.kubernetes.io/unschedulable" 19 | 20 | // TaintNodeMemoryPressure will be added when node has memory pressure 21 | // and removed when node has enough memory. 22 | #TaintNodeMemoryPressure: "node.kubernetes.io/memory-pressure" 23 | 24 | // TaintNodeDiskPressure will be added when node has disk pressure 25 | // and removed when node has enough disk. 26 | #TaintNodeDiskPressure: "node.kubernetes.io/disk-pressure" 27 | 28 | // TaintNodeNetworkUnavailable will be added when node's network is unavailable 29 | // and removed when network becomes ready. 30 | #TaintNodeNetworkUnavailable: "node.kubernetes.io/network-unavailable" 31 | 32 | // TaintNodePIDPressure will be added when node has pid pressure 33 | // and removed when node has enough pid. 34 | #TaintNodePIDPressure: "node.kubernetes.io/pid-pressure" 35 | 36 | // TaintNodeOutOfService can be added when node is out of service in case of 37 | // a non-graceful shutdown 38 | #TaintNodeOutOfService: "node.kubernetes.io/out-of-service" 39 | -------------------------------------------------------------------------------- /timoni/website/cue.mod/gen/k8s.io/api/core/v1/well_known_taints_go_gen.cue: -------------------------------------------------------------------------------- 1 | // Code generated by cue get go. DO NOT EDIT. 2 | 3 | //cue:generate cue get go k8s.io/api/core/v1 4 | 5 | package v1 6 | 7 | // TaintNodeNotReady will be added when node is not ready 8 | // and removed when node becomes ready. 9 | #TaintNodeNotReady: "node.kubernetes.io/not-ready" 10 | 11 | // TaintNodeUnreachable will be added when node becomes unreachable 12 | // (corresponding to NodeReady status ConditionUnknown) 13 | // and removed when node becomes reachable (NodeReady status ConditionTrue). 14 | #TaintNodeUnreachable: "node.kubernetes.io/unreachable" 15 | 16 | // TaintNodeUnschedulable will be added when node becomes unschedulable 17 | // and removed when node becomes schedulable. 18 | #TaintNodeUnschedulable: "node.kubernetes.io/unschedulable" 19 | 20 | // TaintNodeMemoryPressure will be added when node has memory pressure 21 | // and removed when node has enough memory. 22 | #TaintNodeMemoryPressure: "node.kubernetes.io/memory-pressure" 23 | 24 | // TaintNodeDiskPressure will be added when node has disk pressure 25 | // and removed when node has enough disk. 26 | #TaintNodeDiskPressure: "node.kubernetes.io/disk-pressure" 27 | 28 | // TaintNodeNetworkUnavailable will be added when node's network is unavailable 29 | // and removed when network becomes ready. 30 | #TaintNodeNetworkUnavailable: "node.kubernetes.io/network-unavailable" 31 | 32 | // TaintNodePIDPressure will be added when node has pid pressure 33 | // and removed when node has enough pid. 34 | #TaintNodePIDPressure: "node.kubernetes.io/pid-pressure" 35 | 36 | // TaintNodeOutOfService can be added when node is out of service in case of 37 | // a non-graceful shutdown 38 | #TaintNodeOutOfService: "node.kubernetes.io/out-of-service" 39 | -------------------------------------------------------------------------------- /timoni/api/timoni.cue: -------------------------------------------------------------------------------- 1 | // Code generated by timoni. 2 | // Note that this file is required and should contain 3 | // the values schema and the timoni workflow. 4 | 5 | package main 6 | 7 | import ( 8 | "strconv" 9 | "strings" 10 | 11 | templates "timoni.sh/api/templates" 12 | ) 13 | 14 | // Define the schema for the user-supplied values. 15 | // At runtime, Timoni injects the supplied values 16 | // and validates them according to the Config schema. 17 | values: templates.#Config 18 | 19 | // Define how Timoni should build, validate and 20 | // apply the Kubernetes resources. 21 | timoni: { 22 | apiVersion: "v1alpha1" 23 | 24 | // Define the instance that outputs the Kubernetes resources. 25 | // At runtime, Timoni builds the instance and validates 26 | // the resulting resources according to their Kubernetes schema. 27 | instance: templates.#Instance & { 28 | // The user-supplied values are merged with the 29 | // default values at runtime by Timoni. 30 | config: values 31 | // These values are injected at runtime by Timoni. 32 | config: { 33 | metadata: { 34 | name: string @tag(name) 35 | namespace: string @tag(namespace) 36 | } 37 | moduleVersion: string @tag(mv, var=moduleVersion) 38 | kubeVersion: string @tag(kv, var=kubeVersion) 39 | } 40 | } 41 | 42 | // Enforce minimum Kubernetes version. 43 | kubeMinorVersion: int & >=20 44 | kubeMinorVersion: strconv.Atoi(strings.Split(instance.config.kubeVersion, ".")[1]) 45 | 46 | // Pass Kubernetes resources outputted by the instance 47 | // to Timoni's multi-step apply. 48 | apply: app: [ for obj in instance.objects {obj}] 49 | 50 | // Conditionally run tests after an install or upgrade. 51 | if instance.config.test.enabled { 52 | apply: test: [ for obj in instance.tests {obj}] 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /timoni/mongodb/timoni.cue: -------------------------------------------------------------------------------- 1 | // Code generated by timoni. 2 | // Note that this file is required and should contain 3 | // the values schema and the timoni workflow. 4 | 5 | package main 6 | 7 | import ( 8 | "strconv" 9 | "strings" 10 | 11 | templates "timoni.sh/mongodb/templates" 12 | ) 13 | 14 | // Define the schema for the user-supplied values. 15 | // At runtime, Timoni injects the supplied values 16 | // and validates them according to the Config schema. 17 | values: templates.#Config 18 | 19 | // Define how Timoni should build, validate and 20 | // apply the Kubernetes resources. 21 | timoni: { 22 | apiVersion: "v1alpha1" 23 | 24 | // Define the instance that outputs the Kubernetes resources. 25 | // At runtime, Timoni builds the instance and validates 26 | // the resulting resources according to their Kubernetes schema. 27 | instance: templates.#Instance & { 28 | // The user-supplied values are merged with the 29 | // default values at runtime by Timoni. 30 | config: values 31 | // These values are injected at runtime by Timoni. 32 | config: { 33 | metadata: { 34 | name: string @tag(name) 35 | namespace: string @tag(namespace) 36 | } 37 | moduleVersion: string @tag(mv, var=moduleVersion) 38 | kubeVersion: string @tag(kv, var=kubeVersion) 39 | } 40 | } 41 | 42 | // Enforce minimum Kubernetes version. 43 | kubeMinorVersion: int & >=20 44 | kubeMinorVersion: strconv.Atoi(strings.Split(instance.config.kubeVersion, ".")[1]) 45 | 46 | // Pass Kubernetes resources outputted by the instance 47 | // to Timoni's multi-step apply. 48 | apply: app: [ for obj in instance.objects {obj}] 49 | 50 | // Conditionally run tests after an install or upgrade. 51 | if instance.config.test.enabled { 52 | apply: test: [ for obj in instance.tests {obj}] 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /timoni/website/timoni.cue: -------------------------------------------------------------------------------- 1 | // Code generated by timoni. 2 | // Note that this file is required and should contain 3 | // the values schema and the timoni workflow. 4 | 5 | package main 6 | 7 | import ( 8 | "strconv" 9 | "strings" 10 | 11 | templates "timoni.sh/website/templates" 12 | ) 13 | 14 | // Define the schema for the user-supplied values. 15 | // At runtime, Timoni injects the supplied values 16 | // and validates them according to the Config schema. 17 | values: templates.#Config 18 | 19 | // Define how Timoni should build, validate and 20 | // apply the Kubernetes resources. 21 | timoni: { 22 | apiVersion: "v1alpha1" 23 | 24 | // Define the instance that outputs the Kubernetes resources. 25 | // At runtime, Timoni builds the instance and validates 26 | // the resulting resources according to their Kubernetes schema. 27 | instance: templates.#Instance & { 28 | // The user-supplied values are merged with the 29 | // default values at runtime by Timoni. 30 | config: values 31 | // These values are injected at runtime by Timoni. 32 | config: { 33 | metadata: { 34 | name: string @tag(name) 35 | namespace: string @tag(namespace) 36 | } 37 | moduleVersion: string @tag(mv, var=moduleVersion) 38 | kubeVersion: string @tag(kv, var=kubeVersion) 39 | } 40 | } 41 | 42 | // Enforce minimum Kubernetes version. 43 | kubeMinorVersion: int & >=20 44 | kubeMinorVersion: strconv.Atoi(strings.Split(instance.config.kubeVersion, ".")[1]) 45 | 46 | // Pass Kubernetes resources outputted by the instance 47 | // to Timoni's multi-step apply. 48 | apply: app: [ for obj in instance.objects {obj}] 49 | 50 | // Conditionally run tests after an install or upgrade. 51 | if instance.config.test.enabled { 52 | apply: test: [ for obj in instance.tests {obj}] 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /charts/cinema/charts/users/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application URL by running these commands: 2 | {{- if .Values.ingress.enabled }} 3 | {{- range $host := .Values.ingress.hosts }} 4 | {{- range .paths }} 5 | http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} 6 | {{- end }} 7 | {{- end }} 8 | {{- else if contains "NodePort" .Values.service.type }} 9 | export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "users.fullname" . }}) 10 | export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") 11 | echo http://$NODE_IP:$NODE_PORT 12 | {{- else if contains "LoadBalancer" .Values.service.type }} 13 | NOTE: It may take a few minutes for the LoadBalancer IP to be available. 14 | You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "users.fullname" . }}' 15 | export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "users.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") 16 | echo http://$SERVICE_IP:{{ .Values.service.port }} 17 | {{- else if contains "ClusterIP" .Values.service.type }} 18 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "users.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 19 | export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") 20 | echo "Visit http://127.0.0.1:8080 to use your application" 21 | kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /charts/cinema/charts/movies/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application URL by running these commands: 2 | {{- if .Values.ingress.enabled }} 3 | {{- range $host := .Values.ingress.hosts }} 4 | {{- range .paths }} 5 | http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} 6 | {{- end }} 7 | {{- end }} 8 | {{- else if contains "NodePort" .Values.service.type }} 9 | export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "movies.fullname" . }}) 10 | export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") 11 | echo http://$NODE_IP:$NODE_PORT 12 | {{- else if contains "LoadBalancer" .Values.service.type }} 13 | NOTE: It may take a few minutes for the LoadBalancer IP to be available. 14 | You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "movies.fullname" . }}' 15 | export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "movies.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") 16 | echo http://$SERVICE_IP:{{ .Values.service.port }} 17 | {{- else if contains "ClusterIP" .Values.service.type }} 18 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "movies.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 19 | export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") 20 | echo "Visit http://127.0.0.1:8080 to use your application" 21 | kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /charts/cinema/charts/website/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | 1. Get the application URL by running these commands: 2 | {{- if .Values.ingress.enabled }} 3 | {{- range $host := .Values.ingress.hosts }} 4 | {{- range .paths }} 5 | http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} 6 | {{- end }} 7 | {{- end }} 8 | {{- else if contains "NodePort" .Values.service.type }} 9 | export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "website.fullname" . }}) 10 | export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") 11 | echo http://$NODE_IP:$NODE_PORT 12 | {{- else if contains "LoadBalancer" .Values.service.type }} 13 | NOTE: It may take a few minutes for the LoadBalancer IP to be available. 14 | You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "website.fullname" . }}' 15 | export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "website.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") 16 | echo http://$SERVICE_IP:{{ .Values.service.port }} 17 | {{- else if contains "ClusterIP" .Values.service.type }} 18 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "website.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 19 | export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") 20 | echo "Visit http://127.0.0.1:8080 to use your application" 21 | kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT 22 | {{- end }} 23 | --------------------------------------------------------------------------------