aboutsummaryrefslogtreecommitdiffstats
path: root/kubernetes/uui/components/uui-llm-adaptation/templates/deployment.yaml
blob: d2824d1bbb2bdaad7fa93fff8390c93ce0f040ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{{/*
# Copyright © 2022 Huawei Technologies Co., Ltd. All rights reserved.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
*/}}

apiVersion: apps/v1
kind: Deployment
metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
spec:
  selector: {{- include "common.selectors" . | nindent 4 }}
  replicas: {{ .Values.replicaCount }}
  template:
    metadata: {{- include "common.templateMetadata" . | nindent 6 }}
    spec:
      initContainers: {{ include "common.readinessCheck.waitFor" . | nindent 6 }}
      containers:
      - name: {{ include "common.name" . }}
        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
        imagePullPolicy: {{ .Values.pullPolicy }}
        command: ["sh", "-c"]
        args:
        - ". /uui/run.sh"
        ports: {{ include "common.containerPorts" . | nindent 10 }}
        env:
        - name: POSTGRES_IP
          value: {{ .Values.postgres.service.name2 }}
        - name: POSTGRES_PORT
          value: "{{ .Values.postgres.service.externalPort }}"
        - name: POSTGRES_DB_NAME
          value: {{ .Values.postgres.config.pgDatabase }}
        - name: POSTGRES_USERNAME
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "login") | indent 10 }}
        - name: POSTGRES_PASSWORD
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "pg-user-creds" "key" "password") | indent 10 }}
{{- if eq .Values.liveness.enabled true }}
        livenessProbe:
          tcpSocket:
            port: {{ .Values.liveness.port }}
          initialDelaySeconds: {{ .Values.liveness.initialDelaySeconds }}
          periodSeconds: {{ .Values.liveness.periodSeconds }}
{{- end }}
        readinessProbe:
          tcpSocket:
            port: {{ .Values.readiness.port }}
          initialDelaySeconds: {{ .Values.readiness.initialDelaySeconds }}
          periodSeconds: {{ .Values.readiness.periodSeconds }}
        resources: {{ include "common.resources" . | nindent 10 }}
{{- if .Values.nodeSelector }}
        nodeSelector: {{ toYaml .Values.nodeSelector | nindent 10 }}
{{- end }}
{{- if .Values.affinity }}
        affinity: {{ toYaml .Values.affinity | nindent 10 }}
{{- end }}
        volumeMounts:
        - mountPath: /uui/run.sh
          name: entrypoint
          subPath: run.sh
      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
      volumes:
      - name: entrypoint
        configMap:
          name: {{ include "common.fullname" . }}-entrypoint
          defaultMode: 0755
      {{- include "common.imagePullSecrets" . | nindent 6 }}
an>, "http://666.666.666.666:666", P) == 400), %bad status code BadStatus = jiffy:encode({[{<<"status">>, <<"NOTRUNNING">>}]}), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/flows/WhoFlow" -> {200, ""}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/flows/WhoFlow/status" -> {500, BadStatus} end end), ?assert(get_app_healthcheck_program("", "1234%%%%^@#$%@#$%#$^@$.appNOTFOUND", "testns", "http://666.666.666.666:666", P) == 400), %found but bad status BadReturn = jiffy:encode({[{<<"status">>, <<"NOTRUNNING">>}]}), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/flows/WhoFlow" -> {200, ""}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/flows/WhoFlow/status" -> {200, BadReturn} end end), ?assert(get_app_healthcheck_program("", "1234%%%%^@#$%@#$%#$^@$.appNOTFOUND", "testns", "http://666.666.666.666:666", P) == 400), %all good GoodReturn = jiffy:encode({[{<<"status">>, <<"RUNNING">>}]}), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/flows/WhoFlow" -> {200, ""}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/flows/WhoFlow/status" -> {200, GoodReturn} end end), ?assert(get_app_healthcheck_program("", "1234%%%%^@#$%@#$%#$^@$.appNOTFOUND", "testns", "http://666.666.666.666:666", P) == 200), meck:unload(httpabs). get_pipeline_healthcheck_test() -> FakeReturn = jiffy:encode({[{<<"status">>, <<"SCHEDULED">>}]}), try meck:new(httpabs, [passthrough]) catch _:_ -> ok end, %notfound meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/schedules/dataPipelineSchedule/status" -> {404, ""} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.appNOTFOUND", "testns", "http://666.666.666.666:666", 666) == 400), %bad status FakeReturnBadStatus = jiffy:encode({[{<<"status">>, <<"nosoupforyou">>}]}), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/schedules/dataPipelineSchedule/status" -> {200, FakeReturnBadStatus} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666", 666) == 400), %good status but no status endpoint meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/schedules/dataPipelineSchedule/status" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/workflows/DataPipelineWorkflow/runs?limit=666" -> {404, ""} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666", 666) == 404), %good status but a bad malformed inner MalformedRuns = jiffy:encode([ {[{<<"nostatus">>, <<"foryou">>}]}, {[{<<"status">>, <<"RUNNING">>}]} ]), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/schedules/dataPipelineSchedule/status" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/workflows/DataPipelineWorkflow/runs?limit=666" -> {200, MalformedRuns} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666", 666) == 400), %good status but a not good inner BadRuns = jiffy:encode([ {[{<<"status">>, <<"FAILED">>}]}, {[{<<"status">>, <<"RUNNING">>}]} ]), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/schedules/dataPipelineSchedule/status" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/workflows/DataPipelineWorkflow/runs?limit=666" -> {200, BadRuns} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666", 666) == 400), %two running TwoRunning = jiffy:encode([ {[{<<"status">>, <<"RUNNING">>}]}, {[{<<"status">>, <<"COMPLETED">>}]}, {[{<<"status">>, <<"RUNNING">>}]} ]), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/schedules/dataPipelineSchedule/status" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/workflows/DataPipelineWorkflow/runs?limit=666" -> {200, TwoRunning} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666", 666) == 400), %all good %good status but a not good inner GoodRuns = jiffy:encode([ {[{<<"status">>, <<"COMPLETED">>}]}, {[{<<"status">>, <<"RUNNING">>}]}, {[{<<"status">>, <<"COMPLETED">>}]} ]), meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/schedules/dataPipelineSchedule/status" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/workflows/DataPipelineWorkflow/runs?limit=666" -> {200, GoodRuns} end end), ?assert(get_pipeline_healthcheck("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666", 666) == 200), meck:unload(httpabs). get_app_config_test() -> FakeReturn = jiffy:encode({[{<<"configuration">>, {[{<<"welcome">>, <<"toeternity">>}]}}]}), try meck:new(httpabs, [passthrough]) catch _:_ -> ok end, meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND" -> {404, ""} end end), ?assert(get_app_config("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666") == {200, #{<<"welcome">> => <<"toeternity">>}}), ?assert(get_app_config("", "1234%%%%^@#$%@#$%#$^@$.appNOTFOUND", "testns", "http://666.666.666.666:666") == {404, ""}), meck:unload(httpabs). get_app_preferences_test() -> FakeReturn = jiffy:encode({[{<<"welcome">>, <<"toeternity">>}]}), try meck:new(httpabs, [passthrough]) catch _:_ -> ok end, meck:expect(httpabs, get, fun(_XER, URL) -> case URL of "http://666.666.666.666:666/v3/namespaces/testns/apps/1234app/preferences" -> {200, FakeReturn}; "http://666.666.666.666:666/v3/namespaces/testns/apps/1234appNOTFOUND/preferences" -> {404, ""} end end), ?assert(get_app_preferences("", "1234%%%%^@#$%@#$%#$^@$.app", "testns", "http://666.666.666.666:666") == {200, #{<<"welcome">> => <<"toeternity">>}}), ?assert(get_app_preferences("", "1234%%%%^@#$%@#$%#$^@$.appNOTFOUND", "testns", "http://666.666.666.666:666") == {404, ""}), meck:unload(httpabs). form_service_json_from_service_tuple_test() -> ?assert(form_service_json_from_service_tuple(<<"amazin@)#$%@#)$%gapp">>, "amazingns", "http://666.666.666.666:666", {"seeme", "feelme", "PUT"}) == {[{<<"url">> ,<<"http://666.666.666.666:666/v3/namespaces/amazingns/apps/amazingapp/services/seeme/methods/feelme">>}, {<<"method">>, "PUT"}]}). form_stream_url_from_streamname_test() -> ?assert(form_stream_url_from_streamname("666.666.666.666:666", "thevoid", "souls") == <<"666.666.666.666:666/v3/namespaces/thevoid/streams/souls">>). get_cdap_gui_port_from_version_test() -> ?assert(9999 == get_cdap_gui_port_from_version("3.0.0")), ?assert(9999 == get_cdap_gui_port_from_version("3.10.0")), ?assert(9999 == get_cdap_gui_port_from_version("3.0.10")), ?assert(9999 == get_cdap_gui_port_from_version("3.10.10")), ?assert(11011 == get_cdap_gui_port_from_version(<<"4.0.0">>)), ?assert(11011 == get_cdap_gui_port_from_version(<<"4.10.0">>)), ?assert(11011 == get_cdap_gui_port_from_version(<<"4.0.10">>)), ?assert(11011 == get_cdap_gui_port_from_version(<<"4.10.10">>)), ?assert(<<"UNKNOWN CDAP VERSION">> == get_cdap_gui_port_from_version("5.0.0")). map_appname_test() -> ?assert(map_appname(<<"foo">>) == <<"foo">>), ?assert(map_appname(<<"fo.o">>) == <<"foo">>), ?assert(map_appname(<<"f_oo">>) == <<"foo">>), ?assert(map_appname(<<"._*#$%#*%$$#@#foo">>) == <<"foo">>). get_cdap_cluster_version_test() -> FakeReturn = jiffy:encode({[{<<"version">>, <<"4.0.3">>}]}), try meck:new(httpabs, [passthrough]) catch _:_ -> ok end, meck:expect(httpabs, get, fun(_XER, _URL) -> {200, FakeReturn} end), ?assert(get_cdap_cluster_version("","") == <<"4.0.3">>), meck:expect(httpabs, get, fun(_XER, _URL) -> {404, ""} end), ?assert(get_cdap_cluster_version("","") == <<"UNKNOWN CDAP VERSION">>), meck:unload(httpabs).