Skip to content

Commit 81dc4ed

Browse files
committed
Remove blind wait times and use boto3 waiter
Remove hard coding and move to Settings object Remove security group deletion dependency Raise Warnings for failed waiters Set timeout for SSH connection Use gitverse for release notes Update requirements
1 parent 5af2a84 commit 81dc4ed

19 files changed

+563
-486
lines changed

.pre-commit-config.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
repos:
22
-
3-
repo: https://gitlab.com/pycqa/flake8
4-
rev: '3.9.2'
3+
repo: https://github.com/PyCQA/flake8
4+
rev: '6.1.0'
55
hooks:
66
-
77
id: flake8
88
additional_dependencies:
99
- flake8-docstrings
1010
- flake8-sfs
11-
args: [--max-line-length=120, --extend-ignore=SFS3 D107 SFS301 D100 D104 D401]
11+
args: [--max-line-length=120, --extend-ignore=SFS3 D107 SFS301 D100 D104 D401 SFS101 SFS201]
1212

1313
-
14-
repo: https://github.com/pre-commit/mirrors-isort
15-
rev: 'v5.8.0'
14+
repo: https://github.com/PyCQA/isort
15+
rev: '5.12.0'
1616
hooks:
1717
-
1818
id: isort

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ changelog reverse -f release_notes.rst -t 'Release Notes'
114114

115115
**Requirement**
116116
```shell
117-
pip install sphinx==5.1.1 pre-commit recommonmark
117+
pip install sphinx==5.1.1 pre-commit recommonmark gitverse
118118
```
119119

120120
**Usage**

docs/README.html

+8-14
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ <h3>Certificate:<a class="headerlink" href="#certificate" title="Permalink to th
9797
<p>:warning:   Some web browsers might throw a warning and some might even block a self-signed certificate/private CA.</p>
9898
<p>To manually generate a self-signed cert:</p>
9999
<blockquote>
100-
<div><p><code class="docutils literal notranslate"><span class="pre">openssl</span> <span class="pre">req</span> <span class="pre">-newkey</span> <span class="pre">rsa:2048</span> <span class="pre">-new</span> <span class="pre">-nodes</span> <span class="pre">-x509</span> <span class="pre">-days</span> <span class="pre">3650</span> <span class="pre">-keyout</span> <span class="pre">~/.ssh/key.pem</span> <span class="pre">-out</span> <span class="pre">~/.ssh/cert.pem</span></code></p>
100+
<div><p><code class="docutils literal notranslate"><span class="pre">openssl</span> <span class="pre">req</span> <span class="pre">-newkey</span> <span class="pre">rsa:2048</span> <span class="pre">-sha256</span> <span class="pre">-nodes</span> <span class="pre">-keyout</span> <span class="pre">YOURPRIVATE.key</span> <span class="pre">-x509</span> <span class="pre">-days</span> <span class="pre">365</span> <span class="pre">-out</span> <span class="pre">YOURPUBLIC.pem</span> <span class="pre">-subj</span> <span class="pre">&quot;/C=US/ST=New</span> <span class="pre">York/L=Brooklyn/O=Example</span> <span class="pre">Brooklyn</span> <span class="pre">Company/CN=YOURDOMAIN.EXAMPLE&quot;</span></code></p>
101101
</div></blockquote>
102102
<p>[OR]</p>
103103
<p>Simply let <code class="docutils literal notranslate"><span class="pre">expose</span></code> create a self-signed SSL certificate and a private key.</p>
@@ -115,20 +115,15 @@ <h3>Installation<a class="headerlink" href="#installation" title="Permalink to t
115115
</pre></div>
116116
</div>
117117
</section>
118-
<section id="start-tunneling">
119-
<h3>Start tunneling:<a class="headerlink" href="#start-tunneling" title="Permalink to this heading"></a></h3>
118+
<section id="tunneling">
119+
<h3>Tunneling:<a class="headerlink" href="#tunneling" title="Permalink to this heading"></a></h3>
120120
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">expose</span>
121121

122122
<span class="n">tunnel</span> <span class="o">=</span> <span class="n">expose</span><span class="o">.</span><span class="n">Tunnel</span><span class="p">()</span>
123+
<span class="c1"># set &#39;purge&#39; flag to &#39;True&#39; to delete AWS resources if configuration fails</span>
123124
<span class="n">tunnel</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
124-
</pre></div>
125-
</div>
126-
</section>
127-
<section id="stop-tunneling">
128-
<h3>Stop tunneling:<a class="headerlink" href="#stop-tunneling" title="Permalink to this heading"></a></h3>
129-
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">expose</span>
130-
131-
<span class="n">tunnel</span> <span class="o">=</span> <span class="n">expose</span><span class="o">.</span><span class="n">Tunnel</span><span class="p">()</span>
125+
<span class="c1"># sleep or do something else</span>
126+
<span class="c1"># set &#39;partial&#39; flag to &#39;True&#39; to skip SG deletion</span>
132127
<span class="n">tunnel</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
133128
</pre></div>
134129
</div>
@@ -161,7 +156,7 @@ <h2><a class="reference external" href="https://github.com/thevickypedia/expose/
161156
<h2>Linting<a class="headerlink" href="#linting" title="Permalink to this heading"></a></h2>
162157
<p><code class="docutils literal notranslate"><span class="pre">PreCommit</span></code> will ensure linting, and the doc creation are run on every commit.</p>
163158
<p><strong>Requirement</strong></p>
164-
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pip<span class="w"> </span>install<span class="w"> </span><span class="nv">sphinx</span><span class="o">==</span><span class="m">5</span>.1.1<span class="w"> </span>pre-commit<span class="w"> </span>recommonmark
159+
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pip<span class="w"> </span>install<span class="w"> </span><span class="nv">sphinx</span><span class="o">==</span><span class="m">5</span>.1.1<span class="w"> </span>pre-commit<span class="w"> </span>recommonmark<span class="w"> </span>gitverse
165160
</pre></div>
166161
</div>
167162
<p><strong>Usage</strong></p>
@@ -205,8 +200,7 @@ <h3><a href="index.html">Table of Contents</a></h3>
205200
</li>
206201
<li><a class="reference internal" href="#usage">Usage</a><ul>
207202
<li><a class="reference internal" href="#installation">Installation</a></li>
208-
<li><a class="reference internal" href="#start-tunneling">Start tunneling:</a></li>
209-
<li><a class="reference internal" href="#stop-tunneling">Stop tunneling:</a></li>
203+
<li><a class="reference internal" href="#tunneling">Tunneling:</a></li>
210204
</ul>
211205
</li>
212206
<li><a class="reference internal" href="#coding-standards">Coding Standards</a></li>

docs/_sources/README.md.txt

+6-10
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Unfortunately not many SSL certificate providers give the liberty to download ke
5555

5656
To manually generate a self-signed cert:
5757

58-
> `openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout ~/.ssh/key.pem -out ~/.ssh/cert.pem`
58+
> `openssl req -newkey rsa:2048 -sha256 -nodes -keyout YOURPRIVATE.key -x509 -days 365 -out YOURPUBLIC.pem -subj "/C=US/ST=New York/L=Brooklyn/O=Example Brooklyn Company/CN=YOURDOMAIN.EXAMPLE"`
5959

6060
[OR]
6161

@@ -72,19 +72,15 @@ Simply let `expose` create a self-signed SSL certificate and a private key.
7272
python3 -m pip install expose-localhost
7373
```
7474

75-
###### Start tunneling:
75+
###### Tunneling:
7676
```python
7777
import expose
7878

7979
tunnel = expose.Tunnel()
80+
# set 'purge' flag to 'True' to delete AWS resources if configuration fails
8081
tunnel.start()
81-
```
82-
83-
###### Stop tunneling:
84-
```python
85-
import expose
86-
87-
tunnel = expose.Tunnel()
82+
# sleep or do something else
83+
# set 'partial' flag to 'True' to skip SG deletion
8884
tunnel.stop()
8985
```
9086

@@ -118,7 +114,7 @@ changelog reverse -f release_notes.rst -t 'Release Notes'
118114

119115
**Requirement**
120116
```shell
121-
pip install sphinx==5.1.1 pre-commit recommonmark
117+
pip install sphinx==5.1.1 pre-commit recommonmark gitverse
122118
```
123119

124120
**Usage**

docs/_static/pygments.css

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
1717
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
1818
.highlight .gd { color: #A00000 } /* Generic.Deleted */
1919
.highlight .ge { font-style: italic } /* Generic.Emph */
20+
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
2021
.highlight .gr { color: #FF0000 } /* Generic.Error */
2122
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
2223
.highlight .gi { color: #00A000 } /* Generic.Inserted */

docs/genindex.html

+73-27
Original file line numberDiff line numberDiff line change
@@ -44,57 +44,43 @@ <h1 id="index">Index</h1>
4444
<a href="#_"><strong>_</strong></a>
4545
| <a href="#A"><strong>A</strong></a>
4646
| <a href="#C"><strong>C</strong></a>
47+
| <a href="#D"><strong>D</strong></a>
4748
| <a href="#E"><strong>E</strong></a>
49+
| <a href="#F"><strong>F</strong></a>
4850
| <a href="#G"><strong>G</strong></a>
4951
| <a href="#I"><strong>I</strong></a>
5052
| <a href="#J"><strong>J</strong></a>
5153
| <a href="#M"><strong>M</strong></a>
54+
| <a href="#N"><strong>N</strong></a>
5255
| <a href="#P"><strong>P</strong></a>
5356
| <a href="#R"><strong>R</strong></a>
5457
| <a href="#S"><strong>S</strong></a>
5558
| <a href="#T"><strong>T</strong></a>
59+
| <a href="#W"><strong>W</strong></a>
5660

5761
</div>
5862
<h2 id="_">_</h2>
5963
<table style="width: 100%" class="indextable genindextable"><tr>
60-
<td style="width: 33%; vertical-align: top;"><ul>
61-
<li><a href="index.html#expose.main.Tunnel._authorize_security_group">_authorize_security_group() (expose.main.Tunnel method)</a>
62-
</li>
63-
<li><a href="index.html#expose.main.Tunnel._configure_vm">_configure_vm() (expose.main.Tunnel method)</a>
64-
</li>
65-
<li><a href="index.html#expose.main.Tunnel._create_ec2_instance">_create_ec2_instance() (expose.main.Tunnel method)</a>
66-
</li>
67-
<li><a href="index.html#expose.main.Tunnel._create_key_pair">_create_key_pair() (expose.main.Tunnel method)</a>
68-
</li>
69-
<li><a href="index.html#expose.main.Tunnel._create_security_group">_create_security_group() (expose.main.Tunnel method)</a>
70-
</li>
71-
<li><a href="index.html#expose.main.Tunnel._delete_key_pair">_delete_key_pair() (expose.main.Tunnel method)</a>
72-
</li>
73-
<li><a href="index.html#expose.main.Tunnel._delete_security_group">_delete_security_group() (expose.main.Tunnel method)</a>
74-
</li>
75-
</ul></td>
7664
<td style="width: 33%; vertical-align: top;"><ul>
7765
<li><a href="index.html#expose.helpers.cert._generate_serial_hash">_generate_serial_hash() (in module expose.helpers.cert)</a>
78-
</li>
79-
<li><a href="index.html#expose.main.Tunnel._get_image_id">_get_image_id() (expose.main.Tunnel method)</a>
8066
</li>
8167
<li><a href="index.html#expose.helpers.cert._get_serial">_get_serial() (in module expose.helpers.cert)</a>
8268
</li>
83-
<li><a href="index.html#expose.main.Tunnel._get_vpc_id">_get_vpc_id() (expose.main.Tunnel method)</a>
84-
</li>
69+
</ul></td>
70+
<td style="width: 33%; vertical-align: top;"><ul>
8571
<li><a href="index.html#expose.helpers.route_53._get_zone_id">_get_zone_id() (in module expose.helpers.route_53)</a>
8672
</li>
8773
<li><a href="index.html#expose.helpers.server.Server._handler">_handler() (expose.helpers.server.Server method)</a>
88-
</li>
89-
<li><a href="index.html#expose.main.Tunnel._instance_info">_instance_info() (expose.main.Tunnel method)</a>
90-
</li>
91-
<li><a href="index.html#expose.main.Tunnel._terminate_ec2_instance">_terminate_ec2_instance() (expose.main.Tunnel method)</a>
9274
</li>
9375
</ul></td>
9476
</tr></table>
9577

9678
<h2 id="A">A</h2>
9779
<table style="width: 100%" class="indextable genindextable"><tr>
80+
<td style="width: 33%; vertical-align: top;"><ul>
81+
<li><a href="index.html#expose.main.Tunnel.authorize_security_group">authorize_security_group() (expose.main.Tunnel method)</a>
82+
</li>
83+
</ul></td>
9884
<td style="width: 33%; vertical-align: top;"><ul>
9985
<li><a href="index.html#expose.helpers.defaults.AWSDefaults">AWSDefaults (class in expose.helpers.defaults)</a>
10086
</li>
@@ -105,6 +91,30 @@ <h2 id="C">C</h2>
10591
<table style="width: 100%" class="indextable genindextable"><tr>
10692
<td style="width: 33%; vertical-align: top;"><ul>
10793
<li><a href="index.html#expose.helpers.route_53.change_record_set">change_record_set() (in module expose.helpers.route_53)</a>
94+
</li>
95+
<li><a href="index.html#expose.main.Tunnel.configure_vm">configure_vm() (expose.main.Tunnel method)</a>
96+
</li>
97+
</ul></td>
98+
<td style="width: 33%; vertical-align: top;"><ul>
99+
<li><a href="index.html#expose.main.Tunnel.create_ec2_instance">create_ec2_instance() (expose.main.Tunnel method)</a>
100+
</li>
101+
<li><a href="index.html#expose.main.Tunnel.create_key_pair">create_key_pair() (expose.main.Tunnel method)</a>
102+
</li>
103+
<li><a href="index.html#expose.main.Tunnel.create_security_group">create_security_group() (expose.main.Tunnel method)</a>
104+
</li>
105+
</ul></td>
106+
</tr></table>
107+
108+
<h2 id="D">D</h2>
109+
<table style="width: 100%" class="indextable genindextable"><tr>
110+
<td style="width: 33%; vertical-align: top;"><ul>
111+
<li><a href="index.html#expose.main.Tunnel.delete_key_pair">delete_key_pair() (expose.main.Tunnel method)</a>
112+
</li>
113+
</ul></td>
114+
<td style="width: 33%; vertical-align: top;"><ul>
115+
<li><a href="index.html#expose.main.Tunnel.delete_security_group">delete_security_group() (expose.main.Tunnel method)</a>
116+
</li>
117+
<li><a href="index.html#expose.main.Tunnel.disassociate_security_group">disassociate_security_group() (expose.main.Tunnel method)</a>
108118
</li>
109119
</ul></td>
110120
</tr></table>
@@ -166,10 +176,26 @@ <h2 id="E">E</h2>
166176
</ul></td>
167177
</tr></table>
168178

179+
<h2 id="F">F</h2>
180+
<table style="width: 100%" class="indextable genindextable"><tr>
181+
<td style="width: 33%; vertical-align: top;"><ul>
182+
<li><a href="index.html#expose.helpers.auxiliary.flush_screen">flush_screen() (in module expose.helpers.auxiliary)</a>
183+
</li>
184+
</ul></td>
185+
</tr></table>
186+
169187
<h2 id="G">G</h2>
170188
<table style="width: 100%" class="indextable genindextable"><tr>
171189
<td style="width: 33%; vertical-align: top;"><ul>
172190
<li><a href="index.html#expose.helpers.cert.generate_cert">generate_cert() (in module expose.helpers.cert)</a>
191+
</li>
192+
<li><a href="index.html#expose.main.Tunnel.get_config">get_config() (expose.main.Tunnel method)</a>
193+
</li>
194+
</ul></td>
195+
<td style="width: 33%; vertical-align: top;"><ul>
196+
<li><a href="index.html#expose.main.Tunnel.get_image_id">get_image_id() (expose.main.Tunnel method)</a>
197+
</li>
198+
<li><a href="index.html#expose.main.Tunnel.get_vpc_id">get_vpc_id() (expose.main.Tunnel method)</a>
173199
</li>
174200
</ul></td>
175201
</tr></table>
@@ -215,6 +241,14 @@ <h2 id="M">M</h2>
215241
</ul></td>
216242
</tr></table>
217243

244+
<h2 id="N">N</h2>
245+
<table style="width: 100%" class="indextable genindextable"><tr>
246+
<td style="width: 33%; vertical-align: top;"><ul>
247+
<li><a href="index.html#expose.helpers.auxiliary.NotImplementedWarning">NotImplementedWarning</a>
248+
</li>
249+
</ul></td>
250+
</tr></table>
251+
218252
<h2 id="P">P</h2>
219253
<table style="width: 100%" class="indextable genindextable"><tr>
220254
<td style="width: 33%; vertical-align: top;"><ul>
@@ -236,12 +270,14 @@ <h2 id="S">S</h2>
236270
<td style="width: 33%; vertical-align: top;"><ul>
237271
<li><a href="index.html#expose.helpers.server.Server">Server (class in expose.helpers.server)</a>
238272
</li>
239-
<li><a href="index.html#expose.helpers.server.Server.server_write">server_write() (expose.helpers.server.Server method)</a>
273+
<li><a href="index.html#expose.main.Tunnel.server_copy">server_copy() (expose.main.Tunnel method)</a>
240274
</li>
241-
<li><a href="index.html#expose.main.Tunnel.start">start() (expose.main.Tunnel method)</a>
275+
<li><a href="index.html#expose.helpers.server.Server.server_write">server_write() (expose.helpers.server.Server method)</a>
242276
</li>
243277
</ul></td>
244278
<td style="width: 33%; vertical-align: top;"><ul>
279+
<li><a href="index.html#expose.main.Tunnel.start">start() (expose.main.Tunnel method)</a>
280+
</li>
245281
<li><a href="index.html#expose.main.Tunnel.stop">stop() (expose.main.Tunnel method)</a>
246282
</li>
247283
<li><a href="index.html#expose.helpers.defaults.AWSDefaults.SUPPORTED_ACTIONS">SUPPORTED_ACTIONS (expose.helpers.defaults.AWSDefaults attribute)</a>
@@ -254,15 +290,25 @@ <h2 id="S">S</h2>
254290
<h2 id="T">T</h2>
255291
<table style="width: 100%" class="indextable genindextable"><tr>
256292
<td style="width: 33%; vertical-align: top;"><ul>
257-
<li><a href="index.html#expose.helpers.auxiliary.time_converter">time_converter() (in module expose.helpers.auxiliary)</a>
293+
<li><a href="index.html#expose.main.Tunnel.terminate_ec2_instance">terminate_ec2_instance() (expose.main.Tunnel method)</a>
258294
</li>
259295
</ul></td>
260296
<td style="width: 33%; vertical-align: top;"><ul>
297+
<li><a href="index.html#expose.helpers.auxiliary.time_converter">time_converter() (in module expose.helpers.auxiliary)</a>
298+
</li>
261299
<li><a href="index.html#expose.main.Tunnel">Tunnel (class in expose.main)</a>
262300
</li>
263301
</ul></td>
264302
</tr></table>
265303

304+
<h2 id="W">W</h2>
305+
<table style="width: 100%" class="indextable genindextable"><tr>
306+
<td style="width: 33%; vertical-align: top;"><ul>
307+
<li><a href="index.html#expose.helpers.auxiliary.write_screen">write_screen() (in module expose.helpers.auxiliary)</a>
308+
</li>
309+
</ul></td>
310+
</tr></table>
311+
266312

267313

268314
<div class="clearer"></div>

0 commit comments

Comments
 (0)