diff --git a/charts/eurofurence-registration-system/Chart.yaml b/charts/eurofurence-registration-system/Chart.yaml index 25887ac..21e400b 100644 --- a/charts/eurofurence-registration-system/Chart.yaml +++ b/charts/eurofurence-registration-system/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: eurofurence-registration-system -version: 0.0.30 +version: 0.0.31 description: A helm chart that can deploy the Eurofurence Registration System. type: application home: https://github.com/eurofurence/reg-helm-chart diff --git a/charts/eurofurence-registration-system/templates/configmap.yaml b/charts/eurofurence-registration-system/templates/configmap.yaml index 9871267..41513c8 100644 --- a/charts/eurofurence-registration-system/templates/configmap.yaml +++ b/charts/eurofurence-registration-system/templates/configmap.yaml @@ -23,6 +23,9 @@ data: attendee_service: '{{ .Values.system.components.attendee_service.local_base_url }}' payment_service: '{{ .Values.system.components.payment_service.local_base_url }}' mail_service: '{{ .Values.system.components.mail_service.local_base_url }}' + {{- if .Values.system.components.room_service.enable }} + room_service: '{{ .Values.system.components.room_service.local_base_url }}' + {{- end }} id_token_cookie_name: '{{ .Values.system.components.auth_service.id_token_cookie_name }}' access_token_cookie_name: '{{ .Values.system.components.auth_service.access_token_cookie_name }}' admin_group: '{{ .Values.system.components.auth_service.admin_group_id }}' @@ -44,6 +47,17 @@ data: success_redirect: '{{ $public_base_url }}/app/register' failure_redirect: '{{ $public_base_url }}/app/register' {{- end }} + {{- with .Values.system.components.room_service }} + groups: + enable: {{ and .enable (eq .mode "groups") }} + max_size: {{ .max_group_size }} + flags: + {{- .group_flags | toYaml | nindent 8 }} + rooms: + enable: {{ and .enable (or (eq .mode "groups") (eq .mode "packages")) }} + flags: + {{- .room_flags | toYaml | nindent 8 }} + {{- end }} choices: flags: {{- .Values.choices.flags | toYaml | nindent 8 }} diff --git a/charts/eurofurence-registration-system/tests/configmap_test.yaml b/charts/eurofurence-registration-system/tests/configmap_test.yaml index fa5e6ac..80d66d0 100644 --- a/charts/eurofurence-registration-system/tests/configmap_test.yaml +++ b/charts/eurofurence-registration-system/tests/configmap_test.yaml @@ -159,6 +159,7 @@ tests: attendee_service: 'http://attendee-service:8080' payment_service: 'http://payment-service:8080' mail_service: 'http://mail-service:8080' + room_service: 'http://room-service:8080' id_token_cookie_name: 'JWT' access_token_cookie_name: 'AUTH' admin_group: 'D1DQADM' @@ -178,6 +179,16 @@ tests: subject_prefix: 'AWECON' success_redirect: 'https://my.domain.example.com/hello/you/app/register' failure_redirect: 'https://my.domain.example.com/hello/you/app/register' + groups: + enable: false + max_size: 6 + flags: + - public + rooms: + enable: false + flags: + - handicapped + - final choices: flags: ev: diff --git a/charts/eurofurence-registration-system/values-example.yaml b/charts/eurofurence-registration-system/values-example.yaml index 28e319c..665c83f 100644 --- a/charts/eurofurence-registration-system/values-example.yaml +++ b/charts/eurofurence-registration-system/values-example.yaml @@ -153,6 +153,7 @@ system: room_service: enable: true join_link_base_url: 'http://localhost:10000' + mode: groups go_live: public: booking_code: Kaiser-Wilhelm-Koog diff --git a/charts/eurofurence-registration-system/values.schema.json b/charts/eurofurence-registration-system/values.schema.json index 3b2f54b..285fcf8 100644 --- a/charts/eurofurence-registration-system/values.schema.json +++ b/charts/eurofurence-registration-system/values.schema.json @@ -894,6 +894,10 @@ "description": "deploy the room service", "default": "false" }, + "local_base_url": { + "type": "string", + "description": "the local url used to access this service, including protocol and port, with no trailing /" + }, "join_link_base_url": { "type": "string", "description": "the base url to construct group join links from, with no trailing slash" @@ -903,6 +907,12 @@ "description": "the maximum size for roomshare groups", "default": 6 }, + "mode": { + "type": "string", + "enum": ["off", "external", "packages", "groups"], + "description": "the type of room management - see values.yaml comment for detailed description", + "default": "off" + }, "group_flags": { "type": "array", "description": "the list of available group flags", diff --git a/charts/eurofurence-registration-system/values.yaml b/charts/eurofurence-registration-system/values.yaml index 34dc090..eb4940e 100644 --- a/charts/eurofurence-registration-system/values.yaml +++ b/charts/eurofurence-registration-system/values.yaml @@ -131,7 +131,61 @@ system: room_service: enable: false + local_base_url: http://room-service:8080 max_group_size: 6 + # + # the mode of room management this convention employs.go_live: + # + # off (default) = room management features are completely disabled. + # + # Completely hides all relevant pages and options, only displays a few simple + # messages in some places. + # + # typical usecase: private party, housemeet, pay-at-the-door + # + # external = the venue handles all room bookings directly + # + # The only feature the room service offers is an API endpoint with a countdown + # until revealing a secret codeword. Staff can have a different secret codeword + # and a different reveal time. + # + # See the go_live section to configure the secret codewords. + # + # The idea is that you show an info page to accepted attendees called "how to book a room". + # + # Email generator standalone page: https://github.com/eurofurence/reg-hotel-booking + # (not maintained any more because Eurofurence does not currently need it) + # + # packages = sell accomodation as packages + # + # Note: currently somewhat unfinished because none of the current conventions use this mode. + # + # Use this when the convention is reselling individual rooms or beds + # - allows individual pricing of room options + # - attendees enter their roommate ids in their registration + # (currently not implemented) + # - rooms can be maintained in the database + # - packages become unavailable when their quota is exceeded + # (currently not implemented) + # + # In this mode, you can go wild with accommodation packages. + # + # typical usecase: small hotels (large hotels will often force you to use their booking provider) + # + # groups = attendees can form room sharing groups which are then assigned to rooms by staff + # + # Use this when you want staff to have fine-grained control over room assignments + # - staff needs to watch that the number of accepted attendees does not exceed available beds + # - staff needs to enter available rooms in the registration system + # - staff needs to do room assignment into actual rooms prior to the convention + # - conventions can track keys given to the attendees during onsite check-in + # - individual pricing of room options is not directly supported, but with a trick you can do it anyway: + # simply add regular sales packages with the various room prices. If you do this, staff will need to + # manually ensure no-one unintentionally gets a room they haven't paid for. + # + # typical usecase: youth hostels (the price of registration automatically includes a bed) + # + mode: 'off' # external, packages, groups group_flags: - public room_flags: