-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathTestDeploy.html
225 lines (205 loc) · 11.7 KB
/
TestDeploy.html
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Test Deploy Daemon — AppAPI latest documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=80d5e7a1" />
<link rel="stylesheet" type="text/css" href="_static/css/theme.css?v=19f00094" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="_static/tabs.css?v=4c969af8" />
<link rel="stylesheet" type="text/css" href="_static/css/styles.css?v=92f2225a" />
<link rel="stylesheet" type="text/css" href="_static/css/dark.css?v=41caee7b" />
<link rel="stylesheet" type="text/css" href="_static/css/light.css?v=c3d70dd7" />
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="_static/documentation_options.js?v=c6e86fd7"></script>
<script src="_static/doctools.js?v=9a2dae69"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
<script src="_static/copybutton.js?v=f281be69"></script>
<script src="_static/tabs.js?v=3ee01567"></script>
<script src="_static/js/script.js?v=783f4f19"></script>
<script src="_static/js/theme.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Managing External Applications" href="ManagingExternalApplications.html" />
<link rel="prev" title="Creation of Deploy Daemon" href="CreationOfDeployDaemon.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="index.html" class="icon icon-home">
AppAPI
<img src="_static/logo.svg" class="logo" alt="Logo"/>
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="Installation.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="DeployConfigurations.html">Deployment configurations</a></li>
<li class="toctree-l1"><a class="reference internal" href="CreationOfDeployDaemon.html">Creation of Deploy Daemon</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Test Deploy Daemon</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#status-checks">Status Checks</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#register">Register</a></li>
<li class="toctree-l3"><a class="reference internal" href="#image-pull">Image Pull</a></li>
<li class="toctree-l3"><a class="reference internal" href="#container-started">Container Started</a></li>
<li class="toctree-l3"><a class="reference internal" href="#heartbeat">Heartbeat</a></li>
<li class="toctree-l3"><a class="reference internal" href="#init">Init</a></li>
<li class="toctree-l3"><a class="reference internal" href="#enabled">Enabled</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#download-logs">Download Logs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="ManagingExternalApplications.html">Managing External Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="Concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="tech_details/index.html">Technical details</a></li>
<li class="toctree-l1"><a class="reference internal" href="DevSetup.html">Setting up dev environment</a></li>
<li class="toctree-l1"><a class="reference internal" href="notes_for_developers/index.html">Notes for Developers</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq/index.html">Frequently Asked Questions</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">AppAPI</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item active">Test Deploy Daemon</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/TestDeploy.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="test-deploy-daemon">
<span id="test-deploy"></span><h1>Test Deploy Daemon<a class="headerlink" href="#test-deploy-daemon" title="Link to this heading"></a></h1>
<p>You can test each Daemon configuration deployment from the AppAPI Admin settings.</p>
<img alt="_images/test_deploy.png" src="_images/test_deploy.png" />
<section id="status-checks">
<h2>Status Checks<a class="headerlink" href="#status-checks" title="Link to this heading"></a></h2>
<p>The Deploy test installs a <a class="reference external" href="https://github.com/cloud-py-api/test-deploy">test-deploy</a> ExApp
to verify each step of the deployment process, including a hardware support check -
for each compute device, there is a separate Docker image.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The Test Deploy ExApp container is not removed after the test as it’s needed for logs and status checks.
You can remove it after testing from the External Apps page.
The Docker images are also not removed from the Daemon; you can clean up unused images with the <code class="docutils literal notranslate"><span class="pre">docker</span> <span class="pre">image</span> <span class="pre">prune</span></code> command.</p>
</div>
<img alt="_images/test_deploy_modal_4.png" src="_images/test_deploy_modal_4.png" />
<section id="register">
<h3>Register<a class="headerlink" href="#register" title="Link to this heading"></a></h3>
<p>The Register step is the first step; it checks if the ExApp is registered in Nextcloud.</p>
</section>
<section id="image-pull">
<h3>Image Pull<a class="headerlink" href="#image-pull" title="Link to this heading"></a></h3>
<p>The Image Pull step downloads the ExApp Docker image.</p>
<p>Possible errors:</p>
<ul class="simple">
<li><p>Image not found (e.g. not public, no image found for your hardware architecture)</p></li>
<li><p>Image pull failed (e.g., due to network issues)</p></li>
<li><p>Image pull timeout</p></li>
<li><p>Your Docker Socket Proxy is not configured correctly and blocks access to this Docker Engine API</p></li>
</ul>
</section>
<section id="container-started">
<h3>Container Started<a class="headerlink" href="#container-started" title="Link to this heading"></a></h3>
<p>The Container Started step verifies that the ExApp container is created and started successfully.</p>
<p>Possible errors:</p>
<ul class="simple">
<li><dl class="simple">
<dt>Container failed to start with GPU support (may be missing or misconfigured)</dt><dd><ul>
<li><p>For NVIDIA, refer to the <a class="reference external" href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html">NVIDIA Docker configuration docs</a>.</p></li>
<li><p>For AMD, refer to the <a class="reference external" href="https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/docker.html">ROCm Docker configuration docs</a>.</p></li>
</ul>
</dd>
</dl>
</li>
<li><p>The ExApp issue during startup (e.g. not enough memory)</p></li>
</ul>
</section>
<section id="heartbeat">
<h3>Heartbeat<a class="headerlink" href="#heartbeat" title="Link to this heading"></a></h3>
<p>The Heartbeat step checks if the container’s health check is finished and the container is healthy.
The ExApp might have additional pre-configuration logic during this step.</p>
<p>Possible errors:</p>
<ul class="simple">
<li><p>ExApp failed to start a web server, e.g., if the port is already in use (this should be visible in the container logs)</p></li>
<li><p>ExApp heartbeat_count keeps increasing, this may indicate that the ExApp couldn’t start properly</p></li>
<li><p>Nextcloud can not reach the ExApp container, e.g., due to a network issue or a firewall</p></li>
</ul>
</section>
<section id="init">
<h3>Init<a class="headerlink" href="#init" title="Link to this heading"></a></h3>
<p>The Init step checks if the ExApp is initialized and ready to use.
During the init step, the ExApp may perform downloads of extra stuff required for it.</p>
<p>Possible errors:</p>
<ul class="simple">
<li><p>Initialization failed (e.g., due to network issues or timeout)</p></li>
</ul>
</section>
<section id="enabled">
<h3>Enabled<a class="headerlink" href="#enabled" title="Link to this heading"></a></h3>
<p>The Enabled step checks if the ExApp is enabled and ready to use.
During this step, the ExApp registers all the required and available APIs of the Nextcloud AppFramework.</p>
<p>Possible errors:</p>
<ul class="simple">
<li><p>ExApp did not respond to the enable request</p></li>
<li><p>ExApp failed to enable due to a failure in registering AppAPI Nextcloud AppFramework APIs (this should be visible both in the container logs and in the Nextcloud logs if there are any errors)</p></li>
</ul>
</section>
</section>
<section id="download-logs">
<h2>Download Logs<a class="headerlink" href="#download-logs" title="Link to this heading"></a></h2>
<p>You can download the logs of the last test deploy attempt container.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Downloading Docker container logs is only possible for containers using the json-file or journald logging drivers.</p>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="CreationOfDeployDaemon.html" class="btn btn-neutral float-left" title="Creation of Deploy Daemon" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="ManagingExternalApplications.html" class="btn btn-neutral float-right" title="Managing External Applications" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>© Copyright 2024 Nextcloud GmbH.</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>