diff --git a/images/heat/Dockerfile b/images/heat/Dockerfile index bd299130..ce33e913 100644 --- a/images/heat/Dockerfile +++ b/images/heat/Dockerfile @@ -16,15 +16,18 @@ FROM vexxhost/python-builder AS builder FROM vexxhost/python-base AS heat-api-base FROM heat-api-base AS heat-api +COPY heat-wsgi-api /usr/local/bin/heat-wsgi-api EXPOSE 8004 ENV UWSGI_HTTP_SOCKET=:8004 UWSGI_WSGI_FILE=/usr/local/bin/heat-wsgi-api CMD ["/usr/local/bin/uwsgi","--ini","/etc/uwsgi/uwsgi.ini"] FROM heat-api-base AS heat-api-cfn +COPY heat-wsgi-api-cfn /usr/local/bin/heat-wsgi-api-cfn EXPOSE 8000 ENV UWSGI_HTTP_SOCKET=:8000 UWSGI_WSGI_FILE=/usr/local/bin/heat-wsgi-api-cfn CMD ["/usr/local/bin/uwsgi","--ini","/etc/uwsgi/uwsgi.ini"] FROM heat-api-base AS heat-engine +COPY heat-engine /usr/local/bin/heat-engine RUN ln -s /usr/local/etc/heat /etc/heat CMD ["/usr/local/bin/heat-engine"] diff --git a/images/heat/heat-engine b/images/heat/heat-engine new file mode 100755 index 00000000..660845be --- /dev/null +++ b/images/heat/heat-engine @@ -0,0 +1,32 @@ +#!/usr/local/bin/python +# Copyright (c) 2020 VEXXHOST, Inc. +# +# 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. + +import pkg_resources +import re +import sys +import sentry_sdk +from heat.cmd.engine import main + +VERSION = pkg_resources.get_distribution("openstack-heat").version + +sentry_sdk.init( + release="openstack-heat@%s" % VERSION, + traces_sample_rate=0.1 +) + +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/images/heat/heat-wsgi-api b/images/heat/heat-wsgi-api new file mode 100755 index 00000000..cb1b7365 --- /dev/null +++ b/images/heat/heat-wsgi-api @@ -0,0 +1,32 @@ +#!/usr/local/bin/python +# Copyright (c) 2020 VEXXHOST, Inc. +# +# 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. + +import pkg_resources + +import sentry_sdk + +from heat.httpd.heat_api import init_application +from sentry_sdk.integrations import wsgi + +VERSION = pkg_resources.get_distribution("openstack-heat").version + +sentry_sdk.init( + release="openstack-heat@%s" % VERSION, + traces_sample_rate=0.1 +) + +application = init_application() +application = wsgi.SentryWsgiMiddleware(application) diff --git a/images/heat/heat-wsgi-api-cfn b/images/heat/heat-wsgi-api-cfn new file mode 100755 index 00000000..f1f73c74 --- /dev/null +++ b/images/heat/heat-wsgi-api-cfn @@ -0,0 +1,32 @@ +#!/usr/local/bin/python +# Copyright (c) 2020 VEXXHOST, Inc. +# +# 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. + +import pkg_resources + +import sentry_sdk + +from heat.httpd.heat_api_cfn import init_application +from sentry_sdk.integrations import wsgi + +VERSION = pkg_resources.get_distribution("openstack-heat").version + +sentry_sdk.init( + release="openstack-heat@%s" % VERSION, + traces_sample_rate=0.1 +) + +application = init_application() +application = wsgi.SentryWsgiMiddleware(application) diff --git a/images/heat/requirements.txt b/images/heat/requirements.txt index 3ae58f8d..78bfa5b2 100644 --- a/images/heat/requirements.txt +++ b/images/heat/requirements.txt @@ -1,4 +1,5 @@ uWSGI python-memcached PyMySQL +sentry-sdk git+https://opendev.org/openstack/heat@stable/ussuri \ No newline at end of file diff --git a/openstack_operator/templates/heat/daemonset.yml.j2 b/openstack_operator/templates/heat/daemonset.yml.j2 index 85a69ae6..7601bf8e 100644 --- a/openstack_operator/templates/heat/daemonset.yml.j2 +++ b/openstack_operator/templates/heat/daemonset.yml.j2 @@ -70,6 +70,10 @@ spec: image: vexxhost/heat-{{ component }}:latest imagePullPolicy: Always env: + {% if 'sentryDSN' in spec %} + - name: SENTRY_DSN + value: {{ spec.sentryDSN }} + {% endif %} - name: OS_DEFAULT__HOST valueFrom: fieldRef: