1+
2+
3+ <!DOCTYPE html>
4+ < html class ="writer-html5 " lang ="en " >
5+ < head >
6+ < meta charset ="utf-8 ">
7+
8+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 ">
9+
10+ < title > netnir.plugins.netmiko — netnir 0.0.17 0.0.17 documentation</ title >
11+
12+
13+
14+ < link rel ="stylesheet " href ="../../../../_static/css/theme.css " type ="text/css " />
15+ < link rel ="stylesheet " href ="../../../../_static/pygments.css " type ="text/css " />
16+
17+
18+
19+
20+
21+
22+
23+ <!--[if lt IE 9]>
24+ <script src="../../../../_static/js/html5shiv.min.js"></script>
25+ <![endif]-->
26+
27+
28+ < script type ="text/javascript " id ="documentation_options " data-url_root ="../../../../ " src ="../../../../_static/documentation_options.js "> </ script >
29+ < script src ="../../../../_static/jquery.js "> </ script >
30+ < script src ="../../../../_static/underscore.js "> </ script >
31+ < script src ="../../../../_static/doctools.js "> </ script >
32+ < script src ="../../../../_static/language_data.js "> </ script >
33+
34+ < script type ="text/javascript " src ="../../../../_static/js/theme.js "> </ script >
35+
36+
37+ < link rel ="index " title ="Index " href ="../../../../genindex/ " />
38+ < link rel ="search " title ="Search " href ="../../../../search/ " />
39+ </ head >
40+
41+ < body class ="wy-body-for-nav ">
42+
43+
44+ < div class ="wy-grid-for-nav ">
45+
46+ < nav data-toggle ="wy-nav-shift " class ="wy-nav-side ">
47+ < div class ="wy-side-scroll ">
48+ < div class ="wy-side-nav-search " >
49+
50+
51+
52+ < a href ="../../../../ " class ="icon icon-home " alt ="Documentation Home "> netnir 0.0.17
53+
54+
55+
56+ </ a >
57+
58+
59+
60+
61+
62+
63+
64+ < div role ="search ">
65+ < form id ="rtd-search-form " class ="wy-form " action ="../../../../search/ " method ="get ">
66+ < input type ="text " name ="q " placeholder ="Search docs " />
67+ < input type ="hidden " name ="check_keywords " value ="yes " />
68+ < input type ="hidden " name ="area " value ="default " />
69+ </ form >
70+ </ div >
71+
72+
73+ </ div >
74+
75+
76+ < div class ="wy-menu wy-menu-vertical " data-spy ="affix " role ="navigation " aria-label ="main navigation ">
77+
78+
79+
80+
81+
82+
83+ < p class ="caption "> < span class ="caption-text "> Contents:</ span > </ p >
84+ < ul >
85+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../tutorial/ "> netnir at a glance</ a > </ li >
86+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../netnir/ "> code documentation</ a > </ li >
87+ </ ul >
88+
89+
90+
91+ </ div >
92+
93+ </ div >
94+ </ nav >
95+
96+ < section data-toggle ="wy-nav-shift " class ="wy-nav-content-wrap ">
97+
98+
99+ < nav class ="wy-nav-top " aria-label ="top navigation ">
100+
101+ < i data-toggle ="wy-nav-top " class ="fa fa-bars "> </ i >
102+ < a href ="../../../../ "> netnir 0.0.17</ a >
103+
104+ </ nav >
105+
106+
107+ < div class ="wy-nav-content ">
108+
109+ < div class ="rst-content ">
110+
111+
112+
113+
114+
115+
116+
117+
118+
119+
120+
121+
122+
123+
124+
125+
126+
127+ < div role ="navigation " aria-label ="breadcrumbs navigation ">
128+
129+ < ul class ="wy-breadcrumbs ">
130+
131+ < li > < a href ="../../../../ " class ="icon icon-home "> </ a > »</ li >
132+
133+ < li > < a href ="../../../ "> Module code</ a > »</ li >
134+
135+ < li > netnir.plugins.netmiko</ li >
136+
137+
138+ < li class ="wy-breadcrumbs-aside ">
139+
140+ </ li >
141+
142+ </ ul >
143+
144+
145+ < hr />
146+ </ div >
147+ < div role ="main " class ="document " itemscope ="itemscope " itemtype ="http://schema.org/Article ">
148+ < div itemprop ="articleBody ">
149+
150+ < h1 > Source code for netnir.plugins.netmiko</ h1 > < div class ="highlight "> < pre >
151+ < span > </ span > < span class ="kn "> from</ span > < span class ="nn "> nornir.core.task</ span > < span class ="kn "> import</ span > < span class ="n "> Task</ span > < span class ="p "> ,</ span > < span class ="n "> Result</ span >
152+ < span class ="kn "> from</ span > < span class ="nn "> netmiko</ span > < span class ="kn "> import</ span > < span class ="n "> ConnectHandler</ span >
153+ < span class ="kn "> from</ span > < span class ="nn "> netnir.helpers</ span > < span class ="kn "> import</ span > < span class ="n "> device_mapper</ span >
154+
155+
156+ < div class ="viewcode-block " id ="netmiko_send_commands "> < a class ="viewcode-back " href ="../../../../netnir/netnir.plugins/#netnir.plugins.netmiko.netmiko_send_commands "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> netmiko_send_commands</ span > < span class ="p "> (</ span > < span class ="n "> task</ span > < span class ="p "> :</ span > < span class ="n "> Task</ span > < span class ="p "> ,</ span > < span class ="n "> commands</ span > < span class ="p "> :</ span > < span class ="nb "> list</ span > < span class ="p "> ())</ span > < span class ="o "> -></ span > < span class ="n "> Result</ span > < span class ="p "> :</ span >
157+ < span class ="sd "> """send show commands to a device via netmiko</ span >
158+
159+ < span class ="sd "> :param task: nornir Task object</ span >
160+ < span class ="sd "> :param commands: a list of commands to execute</ span >
161+
162+ < span class ="sd "> :returns: nornir Result object</ span >
163+ < span class ="sd "> """</ span >
164+ < span class ="n "> device_params</ span > < span class ="o "> =</ span > < span class ="p "> {</ span >
165+ < span class ="s2 "> "host"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> hostname</ span > < span class ="p "> ,</ span >
166+ < span class ="s2 "> "device_type"</ span > < span class ="p "> :</ span > < span class ="n "> device_mapper</ span > < span class ="p "> (</ span > < span class ="n "> os_type</ span > < span class ="o "> =</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> platform</ span > < span class ="p "> ,</ span > < span class ="n "> proto</ span > < span class ="o "> =</ span > < span class ="s2 "> "netmiko"</ span > < span class ="p "> ),</ span >
167+ < span class ="s2 "> "port"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> port</ span > < span class ="p "> ,</ span >
168+ < span class ="s2 "> "username"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> username</ span > < span class ="p "> ,</ span >
169+ < span class ="s2 "> "password"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> password</ span > < span class ="p "> ,</ span >
170+ < span class ="s2 "> "secret"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> connection_options</ span > < span class ="p "> [</ span > < span class ="s2 "> "netmiko"</ span > < span class ="p "> ][</ span > < span class ="s2 "> "extras"</ span > < span class ="p "> ]</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "secret"</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> ),</ span >
171+ < span class ="p "> }</ span >
172+
173+ < span class ="k "> with</ span > < span class ="n "> ConnectHandler</ span > < span class ="p "> (</ span > < span class ="o "> **</ span > < span class ="n "> device_params</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> conn</ span > < span class ="p "> :</ span >
174+ < span class ="n "> output</ span > < span class ="o "> =</ span > < span class ="nb "> str</ span > < span class ="p "> ()</ span >
175+
176+ < span class ="k "> for</ span > < span class ="n "> command</ span > < span class ="ow "> in</ span > < span class ="n "> commands</ span > < span class ="p "> :</ span >
177+ < span class ="n "> output</ span > < span class ="o "> +=</ span > < span class ="n "> conn</ span > < span class ="o "> .</ span > < span class ="n "> send_command</ span > < span class ="p "> (</ span > < span class ="n "> command</ span > < span class ="p "> )</ span >
178+
179+ < span class ="k "> return</ span > < span class ="n "> Result</ span > < span class ="p "> (</ span > < span class ="n "> host</ span > < span class ="o "> =</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="p "> ,</ span > < span class ="n "> result</ span > < span class ="o "> =</ span > < span class ="n "> output</ span > < span class ="p "> )</ span > </ div >
180+
181+
182+ < div class ="viewcode-block " id ="netmiko_send_config "> < a class ="viewcode-back " href ="../../../../netnir/netnir.plugins/#netnir.plugins.netmiko.netmiko_send_config "> [docs]</ a > < span class ="k "> def</ span > < span class ="nf "> netmiko_send_config</ span > < span class ="p "> (</ span > < span class ="n "> task</ span > < span class ="p "> :</ span > < span class ="n "> Task</ span > < span class ="p "> ,</ span > < span class ="n "> commands</ span > < span class ="p "> :</ span > < span class ="nb "> list</ span > < span class ="p "> ())</ span > < span class ="o "> -></ span > < span class ="n "> Result</ span > < span class ="p "> :</ span >
183+ < span class ="sd "> """execute configuration changes on a device via netmiko</ span >
184+
185+ < span class ="sd "> :param task: nornir Task object</ span >
186+ < span class ="sd "> :param commands: a list of commands to execute</ span >
187+
188+ < span class ="sd "> :returns: nornir Result object</ span >
189+ < span class ="sd "> """</ span >
190+ < span class ="n "> device_params</ span > < span class ="o "> =</ span > < span class ="p "> {</ span >
191+ < span class ="s2 "> "host"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> hostname</ span > < span class ="p "> ,</ span >
192+ < span class ="s2 "> "device_type"</ span > < span class ="p "> :</ span > < span class ="n "> device_mapper</ span > < span class ="p "> (</ span > < span class ="n "> os_type</ span > < span class ="o "> =</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> platform</ span > < span class ="p "> ,</ span > < span class ="n "> proto</ span > < span class ="o "> =</ span > < span class ="s2 "> "netmiko"</ span > < span class ="p "> ),</ span >
193+ < span class ="s2 "> "port"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> port</ span > < span class ="p "> ,</ span >
194+ < span class ="s2 "> "username"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> username</ span > < span class ="p "> ,</ span >
195+ < span class ="s2 "> "password"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> password</ span > < span class ="p "> ,</ span >
196+ < span class ="s2 "> "secret"</ span > < span class ="p "> :</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="o "> .</ span > < span class ="n "> connection_options</ span > < span class ="p "> [</ span > < span class ="s2 "> "netmiko"</ span > < span class ="p "> ][</ span > < span class ="s2 "> "extras"</ span > < span class ="p "> ]</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "secret"</ span > < span class ="p "> ,</ span > < span class ="kc "> None</ span > < span class ="p "> ),</ span >
197+ < span class ="p "> }</ span >
198+
199+ < span class ="k "> with</ span > < span class ="n "> ConnectHandler</ span > < span class ="p "> (</ span > < span class ="o "> **</ span > < span class ="n "> device_params</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> conn</ span > < span class ="p "> :</ span >
200+ < span class ="n "> output</ span > < span class ="o "> =</ span > < span class ="n "> conn</ span > < span class ="o "> .</ span > < span class ="n "> send_config_set</ span > < span class ="p "> (</ span > < span class ="n "> commands</ span > < span class ="p "> )</ span >
201+ < span class ="n "> output</ span > < span class ="o "> +=</ span > < span class ="n "> conn</ span > < span class ="o "> .</ span > < span class ="n "> save</ span > < span class ="p "> ()</ span >
202+
203+ < span class ="k "> return</ span > < span class ="n "> Result</ span > < span class ="p "> (</ span > < span class ="n "> task</ span > < span class ="o "> .</ span > < span class ="n "> host</ span > < span class ="p "> ,</ span > < span class ="n "> result</ span > < span class ="o "> =</ span > < span class ="n "> output</ span > < span class ="p "> )</ span > </ div >
204+ </ pre > </ div >
205+
206+ </ div >
207+
208+ </ div >
209+ < footer >
210+
211+
212+ < hr />
213+
214+ < div role ="contentinfo ">
215+ < p >
216+
217+ © Copyright 2020, James Williams
218+
219+ </ p >
220+ </ div >
221+
222+
223+
224+ Built with < a href ="http://sphinx-doc.org/ "> Sphinx</ a > using a
225+
226+ < a href ="https://github.com/rtfd/sphinx_rtd_theme "> theme</ a >
227+
228+ provided by < a href ="https://readthedocs.org "> Read the Docs</ a > .
229+
230+ </ footer >
231+
232+ </ div >
233+ </ div >
234+
235+ </ section >
236+
237+ </ div >
238+
239+
240+ < script type ="text/javascript ">
241+ jQuery ( function ( ) {
242+ SphinxRtdTheme . Navigation . enable ( true ) ;
243+ } ) ;
244+ </ script >
245+
246+
247+
248+
249+
250+
251+ </ body >
252+ </ html >
0 commit comments