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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
|
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2021, VyOS maintainers and contributors
# This file is distributed under the same license as the VyOS package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: VyOS 1.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-10-21 12:01+0200\n"
"PO-Revision-Date: 2022-10-21 10:04+0000\n"
"Language-Team: German (Germany) (https://www.transifex.com/vyos/teams/155110/de_DE/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de_DE\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: ../../contributing/development.rst:5 13f6a7fcaf664b70b688682893ae0e83
msgid "Development"
msgstr ""
#: ../../contributing/development.rst:7 bca53b364a914bce877b500ae541ff18
msgid ""
"All VyOS source code is hosted on GitHub under the VyOS organization which "
"can be found here: https://github.com/vyos"
msgstr ""
#: ../../contributing/development.rst:10 33a075fffdd64ce491df5c96ef021c4f
msgid ""
"Our code is split into several modules. VyOS is composed of multiple "
"individual packages, some of them are forks of upstream packages and are "
"periodically synced with upstream, so keeping the whole source under a "
"single repository would be very inconvenient and slow. There is now an "
"ongoing effort to consolidate all VyOS-specific framework/config packages "
"into vyos-1x package, but the basic structure is going to stay the same, "
"just with fewer and fewer packages while the base code is rewritten from "
"Perl/BASH into Python using and XML based interface definition for the CLI."
msgstr ""
#: ../../contributing/development.rst:19 495a976e071d4dd69db319e18c61b25c
msgid ""
"The repository that contains all the ISO build scripts is: "
"https://github.com/vyos/vyos-build"
msgstr ""
#: ../../contributing/development.rst:22 89dd9bf9c5ee41e19e60ab3f5da1a8bc
msgid ""
"The README.md file will guide you to use the this top level repository."
msgstr ""
#: ../../contributing/development.rst:25 6e4a1b07b19e4427befa188a40f6a904
msgid "Submit a Patch"
msgstr ""
#: ../../contributing/development.rst:27 0f4667f35277442aaaae849d2e67af0d
msgid ""
"Patches are always more than welcome. To have a clean and easy to maintain "
"repository we have some guidelines when working with Git. A clean repository"
" eases the automatic generation of a changelog file."
msgstr ""
#: ../../contributing/development.rst:31 6132f60414b14d07be6626db55d39c96
msgid ""
"A good approach for writing commit messages is actually to have a look at "
"the file(s) history by invoking ``git log path/to/file.txt``."
msgstr ""
#: ../../contributing/development.rst:37 c5541522f1854c0a89696d4bdac27d43
msgid "Prepare patch/commit"
msgstr ""
#: ../../contributing/development.rst:39 567f89dd00c545d3b940d01e0240f85c
msgid ""
"In a big system, such as VyOS, that is comprised of multiple components, "
"it's impossible to keep track of all the changes and bugs/feature requests "
"in one's head. We use a bugtracker known as Phabricator_ for it (\"issue "
"tracker\" would be a better term, but this one stuck)."
msgstr ""
#: ../../contributing/development.rst:44 4c02c609c4364dcbaf99318a1b0de8e5
msgid "The information is used in three ways:"
msgstr ""
#: ../../contributing/development.rst:46 182bf37a0da641da9e72c341a930313e
msgid ""
"Keep track of the progress (what we've already done in this branch and what "
"we still need to do)."
msgstr ""
#: ../../contributing/development.rst:49 3441bca232f341cd9fd36ded1b8a7d9a
msgid "Prepare release notes for upcoming releases"
msgstr ""
#: ../../contributing/development.rst:51 dd91874c6e484dffbb9f007186e77068
msgid ""
"Help future maintainers of VyOS (it could be you!) to find out why certain "
"things have been changed in the codebase or why certain features have been "
"added"
msgstr ""
#: ../../contributing/development.rst:55 3d262f62e2824207a5336028aacbb014
msgid ""
"To make this approach work, every change must be associated with a task "
"number (prefixed with **T**) and a component. If there is no bug "
"report/feature request for the changes you are going to make, you have to "
"create a Phabricator_ task first. Once there is an entry in Phabricator_, "
"you should reference its id in your commit message, as shown below:"
msgstr ""
#: ../../contributing/development.rst:61 47e4acaf426145008b6fd8ab91bd82fa
msgid "``ddclient: T1030: auto create runtime directories``"
msgstr ""
#: ../../contributing/development.rst:62 3c338c90678541c591296fd27890f079
msgid "``Jenkins: add current Git commit ID to build description``"
msgstr ""
#: ../../contributing/development.rst:64 c7830178939b4a0189fcc2f20822ebd3
msgid ""
"If there is no Phabricator_ reference in the commits of your pull request, "
"we have to ask you to amend the commit message. Otherwise we will have to "
"reject it."
msgstr ""
#: ../../contributing/development.rst:69 ed8e41d2420a401092165cce77771c92
msgid "Writing good commit messages"
msgstr ""
#: ../../contributing/development.rst:71 84ed04eae60d4146ae29846f909fcd4c
msgid ""
"The format should be and is inspired by: https://git-scm.com/book/ch5-2.html"
" It is also worth reading https://chris.beams.io/posts/git-commit/"
msgstr ""
#: ../../contributing/development.rst:74 a534e6ffa0414c95943fd95381621982
msgid ""
"A single, short, summary of the commit (recommended 50 characters or less, "
"not exceeding 80 characters) containing a prefix of the changed component "
"and the corresponding Phabricator_ reference e.g. ``snmp: T1111:`` or "
"``ethernet: T2222:`` - multiple components could be concatenated as in "
"``snmp: ethernet: T3333``"
msgstr ""
#: ../../contributing/development.rst:80 6b72dc852a05479b82e4682f7aa54cba
msgid ""
"In some contexts, the first line is treated as the subject of an email and "
"the rest of the text as the body. The blank line separating the summary from"
" the body is critical (unless you omit the body entirely); tools like rebase"
" can get confused if you run the two together."
msgstr ""
#: ../../contributing/development.rst:85 f5af85d4f0434ac6acb2329942d002e8
msgid "Followed by a message which describes all the details like:"
msgstr ""
#: ../../contributing/development.rst:87 5770782710354b32a60879e0166ef185
msgid ""
"What/why/how something has been changed, makes everyone's life easier when "
"working with `git bisect`"
msgstr ""
#: ../../contributing/development.rst:90 d409491e1b0b4fa1b7786c2353c56400
msgid ""
"All text of the commit message should be wrapped at 72 characters if "
"possible which makes reading commit logs easier with ``git log`` on a "
"standard terminal (which happens to be 80x25)"
msgstr ""
#: ../../contributing/development.rst:94 7aaf86fe66e8470584b71ef895e7a273
msgid ""
"If applicable a reference to a previous commit should be made linking those "
"commits nicely when browsing the history: ``After commit abcd12ef (\"snmp: "
"this is a headline\") a Python import statement is missing, throwing the "
"following exception: ABCDEF``"
msgstr ""
#: ../../contributing/development.rst:99 1ea5d06d73934128aa343519d5697279
msgid ""
"Always use the ``-x`` option to the ``git cherry-pick`` command when back or"
" forward porting an individual commit. This automatically appends the line: "
"``(cherry picked from commit <ID>)`` to the original authors commit message "
"making it easier when bisecting problems."
msgstr ""
#: ../../contributing/development.rst:104 b8149340cde0423fbd040efaab204019
msgid ""
"Every change set must be consistent (self containing)! Do not fix multiple "
"bugs in a single commit. If you already worked on multiple fixes in the same"
" file use `git add --patch` to only add the parts related to the one issue "
"into your upcoming commit."
msgstr ""
#: ../../contributing/development.rst:109 5ef784f4960e4a82a5bddaa415944c61
msgid "Limits:"
msgstr ""
#: ../../contributing/development.rst:111 112a6d6a4c8c4d32b0e052cf60e26573
msgid ""
"We only accept bugfixes in packages other than "
"https://github.com/vyos/vyos-1x as no new functionality should use the old "
"style templates (``node.def`` and Perl/BASH code. Use the new style "
"XML/Python interface instead."
msgstr ""
#: ../../contributing/development.rst:115 b0bb964fb0764e2f9f958335ea287868
msgid ""
"Please submit your patches using the well-known GitHub pull-request against "
"our repositories found in the VyOS GitHub organisation at "
"https://github.com/vyos"
msgstr ""
#: ../../contributing/development.rst:120 c38eca26eca14a4daf60ac8dc815cc5b
msgid "Determinine source package"
msgstr ""
#: ../../contributing/development.rst:122 3ac68249f169449ebffe37b33abac85a
msgid ""
"Suppose you want to make a change in the webproxy script but yet you do not "
"know which of the many VyOS packages ship this file. You can determine the "
"VyOS package name in question by using Debian's ``dpkg -S`` command of your "
"running VyOS installation."
msgstr ""
#: ../../contributing/development.rst:132 09de05f3b665422cab77b5808e5b2585
msgid ""
"This means the file in question (``/opt/vyatta/sbin/vyatta-update-"
"webproxy.pl``) is located in the ``vyatta-webproxy`` package which can be "
"found here: https://github.com/vyos/vyatta-webproxy"
msgstr ""
#: ../../contributing/development.rst:138 abf1cbb03527490db9d36348be3f9fb7
msgid "Fork Repository and submit Patch"
msgstr ""
#: ../../contributing/development.rst:140 cf2f695e771e4da7afcbe7f4e6be4764
msgid ""
"Forking the repository and submitting a GitHub pull-request is the preferred"
" way of submitting your changes to VyOS. You can fork any VyOS repository to"
" your very own GitHub account by just appending ``/fork`` to any "
"repository's URL on GitHub. To e.g. fork the ``vyos-1x`` repository, open "
"the following URL in your favourite browser: "
"https://github.com/vyos/vyos-1x/fork"
msgstr ""
#: ../../contributing/development.rst:146 47d1dec79b274c96bae18c564fffc8d4
msgid ""
"You then can proceed with cloning your fork or add a new remote to your "
"local repository:"
msgstr ""
#: ../../contributing/development.rst:149 473607ea52524136bd35ff89877b461d
msgid "Clone: ``git clone https://github.com/<user>/vyos-1x.git``"
msgstr ""
#: ../../contributing/development.rst:151 eb23e4735532454a812e977f4e1f64e0
msgid "Fork: ``git remote add myfork https://github.com/<user>/vyos-1x.git``"
msgstr ""
#: ../../contributing/development.rst:153 51a8dee2722546f5a1a8b841bf0d47d1
msgid ""
"In order to record you as the author of the fix please identify yourself to "
"Git by setting up your name and email. This can be done local for this one "
"and only repository ``git config`` or globally using ``git config "
"--global``."
msgstr ""
#: ../../contributing/development.rst:162 08945358e29443e1b768547e707f4dff
msgid ""
"Make your changes and save them. Do the following for all changes files to "
"record them in your created Git commit:"
msgstr ""
#: ../../contributing/development.rst:165 be8ecf3e5c9242b0be78f476cb82ca8f
msgid ""
"Add file to Git index using ``git add myfile``, or for a whole directory: "
"``git add somedir/*``"
msgstr ""
#: ../../contributing/development.rst:168 29625b4d7af94c28a91c85596b4cb1de
msgid ""
"Commit the changes by calling ``git commit``. Please use a meaningful commit"
" headline (read above) and don't forget to reference the Phabricator_ ID."
msgstr ""
#: ../../contributing/development.rst:171 48466af0f86c48b096143233ded58de4
msgid "Submit the patch ``git push`` and create the GitHub pull-request."
msgstr ""
#: ../../contributing/development.rst:175 36bcc1288264449a8bad68f6e2565f80
msgid "Attach patch to Phabricator task"
msgstr ""
#: ../../contributing/development.rst:177 ae16033e6e7c4914aa0406204a1591f5
msgid ""
"Follow the above steps on how to \"Fork repository to submit a Patch\". "
"Instead of uploading \"pushing\" your changes to GitHub you can export the "
"patches/ commits and send it to maintainers@vyos.net or attach it directly "
"to the bug (preferred over email)"
msgstr ""
#: ../../contributing/development.rst:182 6fe17a5c6e0f48ca809ad82aaab5d704
msgid ""
"Export last commit to patch file: ``git format-patch`` or export the last "
"two commits into its appropriate patch files: ``git format-patch -2``"
msgstr ""
#: ../../contributing/development.rst:187 7200a007c67c4e238e709557dcea986a
msgid "Coding Guidelines"
msgstr ""
#: ../../contributing/development.rst:189 962d647556e8434c93a1e524737691c2
msgid ""
"Like any other project we have some small guidelines about our source code, "
"too. The rules we have are not there to punish you - the rules are in place "
"to help us all. By having a consistent coding style it becomes very easy for"
" new and also longtime contributors to navigate through the sources and all "
"the implied logic of any one source file.."
msgstr ""
#: ../../contributing/development.rst:195 8702ba3737a94b18902caf95e9c3f75e
msgid ""
"Python 3 **shall** be used. How long can we keep Python 2 alive anyway? No "
"considerations for Python 2 compatibility **should** be taken at any time."
msgstr ""
#: ../../contributing/development.rst:200 bf829c06036e44e29a94a0109251e344
msgid "Formatting"
msgstr ""
#: ../../contributing/development.rst:202 c3cbbf35ce07497ca96a4c1e1a543730
msgid ""
"Python: Tabs **shall not** be used. Every indentation level should be 4 "
"spaces"
msgstr ""
#: ../../contributing/development.rst:203 0edd04481e594ff09ee893c010cd881e
msgid ""
"XML: Tabs **shall not** be used. Every indentation level should be 2 spaces"
msgstr ""
#: ../../contributing/development.rst:205 f201706450d645999e1edd4c2558bce9
msgid ""
"There are extensions to e.g. VIM (xmllint) which will help you to get your "
"indention levels correct. Add to following to your .vimrc file: ``au "
"FileType xml setlocal equalprg=xmllint\\ --format\\ --recover\\ -\\ "
"2>/dev/null`` now you can call the linter using ``gg=G`` in command mode."
msgstr ""
#: ../../contributing/development.rst:212 660e9fc0c3ab489392b6ec6ab967a33b
msgid "Text generation"
msgstr ""
#: ../../contributing/development.rst:214 a46c47306cf44f3fa51fb0e183d33d60
msgid ""
"Template processor **should** be used for generating config files. Built-in "
"string formatting **may** be used for simple line-oriented formats where "
"every line is self-contained, such as iptables rules. Template processor "
"**must** be used for structured, multi-line formats such as those used by "
"ISC DHCPd."
msgstr ""
#: ../../contributing/development.rst:219 f97220818b4f4d38bc701b54beb1f26e
msgid "The default template processor for VyOS code is Jinja2_."
msgstr ""
#: ../../contributing/development.rst:223 c70da7d925ae4993834091de6a0dc12b
msgid "Summary"
msgstr ""
#: ../../contributing/development.rst:225 cc3153e1c9bf4429ae228461552f1b13
msgid ""
"When modifying the source code, remember these rules of the legacy "
"elimination campaign:"
msgstr ""
#: ../../contributing/development.rst:228 d65f761886d94c4486c6286959ae4bb1
msgid "No new features in Perl"
msgstr ""
#: ../../contributing/development.rst:229 b551d79de6b34b199e66e99ac128e3e2
msgid "No old style command definitions"
msgstr ""
#: ../../contributing/development.rst:230 52734945788945b69e2fe8834950a01c
msgid "No code incompatible with Python3"
msgstr ""
#: ../../contributing/development.rst:234 c9418116422b4b579870438fdd2830d6
msgid "Python"
msgstr ""
#: ../../contributing/development.rst:236 ec8641ba5d0d4d9980b63b5d9e90345d
msgid ""
"The switch to the Python programming language for new code is not merely a "
"change of the language, but a chance to rethink and improve the programming "
"approach."
msgstr ""
#: ../../contributing/development.rst:240 53852f2af01f40039b618f0bd0dec169
msgid ""
"Let's face it: VyOS is full of spaghetti code where logic for reading the "
"VyOS config, generating daemon configs, and restarting processes is all "
"mixed up."
msgstr ""
#: ../../contributing/development.rst:243 15a4a1df6d5c466889aebfed7616c29f
msgid ""
"Python (or any other language, for that matter) does not provide automatic "
"protection from bad design, so we need to also devise design guidelines and "
"follow them to keep the system extensible and maintainable."
msgstr ""
#: ../../contributing/development.rst:247 b444574c9f1f48d79335a6a87f6289d1
msgid ""
"But we are here to assist you and want to guide you through how you can "
"become a good VyOS contributor. The rules we have are not there to punish "
"you - the rules are in place to help us all. What does it mean? By having a "
"consistent coding style it becomes very easy for new contributors and also "
"longtime contributors to navigate through the sources and all the implied "
"logic of the spaghetti code."
msgstr ""
#: ../../contributing/development.rst:254 5177502a9cd44b96beca39366de4eb20
msgid ""
"Please use the following template as good starting point when developing new"
" modules or even rewrite a whole bunch of code in the new style XML/Pyhon "
"interface."
msgstr ""
#: ../../contributing/development.rst:260 26aa43f8ad9e4dbdbdfaa474e66358f8
msgid "Configuration Script Structure and Behaviour"
msgstr ""
#: ../../contributing/development.rst:262 2c7cb8e45c9e4ad990aa8e0961958d81
msgid ""
"Your configuration script or operation mode script which is also written in "
"Python3 should have a line break on 80 characters. This seems to be a bit "
"odd nowadays but as some people also work remotely or program using vi(m) "
"this is a fair good standard which I hope we can rely on."
msgstr ""
#: ../../contributing/development.rst:267 83c054697c564ea78e266afd9ea4d371
msgid ""
"In addition this also helps when browsing the GitHub codebase on a mobile "
"device if you happen to be a crazy scientist."
msgstr ""
#: ../../contributing/development.rst:328 2a7679b8b46543ff801735bf23a2b6a2
msgid ""
"The ``get_config()`` function must convert the VyOS config to an abstract, "
"internal representation. No other function is allowed to call the "
"``vyos.config. Config`` object method directly. The rationale for it is that"
" when config reads are mixed with other logic, it's very hard to change the "
"config syntax since you need to weed out every occurrence of the old syntax."
" If syntax-specific code is confined to a single function, the rest of the "
"code can be left untouched as long as the internal representation remains "
"compatible."
msgstr ""
#: ../../contributing/development.rst:336 6da990d2f8104f1289c1b08c6add7c7a
msgid ""
"Another advantage is testability of the code. Mocking the entire config "
"subsystem is hard, while constructing an internal representation by hand is "
"way simpler."
msgstr ""
#: ../../contributing/development.rst:340 7e64a2d3f8104a778f29a4017feddc41
msgid ""
"The ``verify()`` function takes your internal representation of the config "
"and checks if it's valid, otherwise it must raise ``ConfigError`` with an "
"error message that describes the problem and possibly suggests how to fix "
"it. It must not make any changes to the system. The rationale for it is "
"again testability and, in the future when the config backend is ready and "
"every script is rewritten in this fashion, ability to execute commit dry run"
" (\"commit test\" like in JunOS) and abort commit before making any changes "
"to the system if an error is found in any component."
msgstr ""
#: ../../contributing/development.rst:349 bd667197d6bf44adbcc9eeae47406de5
msgid ""
"The ``generate()`` function generates config files for system components."
msgstr ""
#: ../../contributing/development.rst:351 e8d9af1c502e437ba433f3687ffd7ae0
msgid ""
"The ``apply()`` function applies the generated configuration to the live "
"system. It should use non-disruptive reload whenever possible. It may "
"execute disruptive operations such as daemon process restart if a particular"
" component does not support non-disruptive reload, or when the expected "
"service degradation is minimal (for example, in case of auxiliary services "
"such as LLDPd). In case of high impact services such as VPN daemon and "
"routing protocols, when non- disruptive reload is supported for some but not"
" all types of configuration changes, scripts authors should make effort to "
"determine if a configuration change can be done in a non-disruptive way and "
"only resort to disruptive restart if it cannot be avoided."
msgstr ""
#: ../../contributing/development.rst:362 976cb9f3d9814554b2d10496826e3078
msgid ""
"Unless absolutely necessary, configuration scripts should not modify the "
"active configuration of system components directly. Whenever at all "
"possible, scripts should generate a configuration file or files that can be "
"applied with a single command such as reloading a service through systemd "
"init. Inserting statements one by one is particularly discouraged, for "
"example, when configuring netfilter rules, saving them to a file and loading"
" it with iptables-restore should always be preferred to executing iptables "
"directly."
msgstr ""
#: ../../contributing/development.rst:370 6fe2ed80e6804a4e922703668c95efb8
msgid ""
"The ``apply()`` and ``generate()`` functions may ``raise ConfigError`` if, "
"for example, the daemon failed to start with the updated config. It "
"shouldn't be a substitute for proper config checking in the ``verify()`` "
"function. All reasonable effort should be made to verify that generated "
"configuration is valid and will be accepted by the daemon, including, when "
"necessary, cross- checks with other VyOS configuration subtrees."
msgstr ""
#: ../../contributing/development.rst:377 f1efcf352ca74fd99b34a443c1d086ad
msgid ""
"Exceptions, including ``VyOSError`` (which is raised by "
"``vyos.config.Config`` on improper config operations, such as trying to use "
"``list_nodes()`` on a non-tag node) should not be silenced or caught and re-"
"raised as config error. Sure this will not look pretty on user's screen, but"
" it will make way better bug reports, and help users (and most VyOS users "
"are IT professionals) do their own debugging as well."
msgstr ""
#: ../../contributing/development.rst:384 0c989b22ba6341049eeff36f354faabb
msgid ""
"For easy orientation we suggest you take a look on the ``ntp.py`` or "
"``interfaces-bonding.py`` (for tag nodes) implementation. Both files can be "
"found in the vyos-1x_ repository."
msgstr ""
#: ../../contributing/development.rst:390 753ac897e3044181977a217d93c293dd
msgid "XML (used for CLI definitions)"
msgstr ""
#: ../../contributing/development.rst:392 80257fc611834dbba73ec93a5e12124a
msgid ""
"The bash (or better vbash) completion in VyOS is defined in *templates*. "
"Templates are text files (called ``node.def``) stored in a directory tree. "
"The directory names define the command names, and template files define the "
"command behaviour. Before VyOS 1.2 (crux) this files were created by hand. "
"After a complex redesign process_ the new style template are automatically "
"generated from a XML input file."
msgstr ""
#: ../../contributing/development.rst:399 b957e501d42942e4a5002cafeead50e9
msgid ""
"XML interface definitions for VyOS come with a RelaxNG schema and are "
"located in the vyos-1x_ module. This schema is a slightly modified schema "
"from VyConf_ alias VyOS 2.0 So VyOS 1.2.x interface definitions will be "
"reusable in Nextgen VyOS Versions with very minimal changes."
msgstr ""
#: ../../contributing/development.rst:404 87ee6c860692439c85189b514a35064a
msgid ""
"The great thing about schemas is not only that people can know the complete "
"grammar for certain, but also that it can be automatically verified. The "
"`scripts/build-command-templates` script that converts the XML definitions "
"to old style templates also verifies them against the schema, so a bad "
"definition will cause the package build to fail. I do agree that the format "
"is verbose, but there is no other format now that would allow this. Besides,"
" a specialized XML editor can alleviate the issue with verbosity."
msgstr ""
#: ../../contributing/development.rst:412 8ddcf1750176485fa0d58071eadd993e
msgid "Example:"
msgstr ""
#: ../../contributing/development.rst:490 ecb47c0f1ea9452c842c08e7975d1d9a
msgid ""
"Command definitions are purely declarative, and cannot contain any logic. "
"All logic for generating config files for target applications, restarting "
"services and so on is implemented in configuration scripts instead."
msgstr ""
#: ../../contributing/development.rst:495 cc22cb46c89c4de19ffb0afb032c3fdb
msgid "GNU Preprocessor"
msgstr ""
#: ../../contributing/development.rst:497 b7e5943f25fb40f3912acaaf54f35334
msgid ""
"XML interface definition files use the `xml.in` file extension which was "
"implemented in :vytask:`T1843`. XML interface definitions tend to have a lot"
" of duplicated code in areas such as:"
msgstr ""
#: ../../contributing/development.rst:501 ab255f82577842e68117818cf6ebbaeb
msgid "VIF (incl. VIF-S/VIF-C)"
msgstr ""
#: ../../contributing/development.rst:502 b0107af78f194974882efa229e16d549
msgid "Address"
msgstr ""
#: ../../contributing/development.rst:503 5e420ecfba134a6c95ee6263a33862c9
msgid "Description"
msgstr ""
#: ../../contributing/development.rst:504 8460407ee3f9477ebcc971d5c2ced47d
msgid "Enabled/Disabled"
msgstr ""
#: ../../contributing/development.rst:506 8610850201c44d678df80cdbb4effc51
msgid ""
"Instead of supplying all those XML nodes multiple times there are now "
"include files with predefined features. Brief overview:"
msgstr ""
#: ../../contributing/development.rst:509 36a0a931d83a45829cc8ecc9b09cc96a
msgid "`IPv4, IPv6 and DHCP(v6)`_ address assignment"
msgstr ""
#: ../../contributing/development.rst:510 def3132d1e21443c85b21dd1fa2f3e6a
msgid "`IPv4, IPv6`_ address assignment"
msgstr ""
#: ../../contributing/development.rst:511 61ce6f0a4cb3462d8bc48d384b506913
msgid "`VLAN (VIF)`_ definition"
msgstr ""
#: ../../contributing/development.rst:512 781e8c44179a431da25e8fe060a04080
msgid "`MAC address`_ assignment"
msgstr ""
#: ../../contributing/development.rst:514 067bc714fc1a45de9fcc0a5b009b9d90
msgid ""
"All interface definition XML input files (.in suffix) will be sent to the "
"GCC preprocess and the output is stored in the `build/interface-definitions`"
" folder. The previously mentioned `scripts/build-command-templates` script "
"operates on the `build/interface-definitions` folder to generate all "
"required CLI nodes."
msgstr ""
#: ../../contributing/development.rst:535 9be60615915942eeaf9a1e0b049eaf27
msgid "Guidelines"
msgstr ""
#: ../../contributing/development.rst:538 14786773fcee449da1c62ba5c1a64a0a
msgid "Use of numbers"
msgstr ""
#: ../../contributing/development.rst:540 da524dea88274a22832af93181402987
msgid ""
"Use of numbers in command names **should** be avoided unless a number is a "
"part of a protocol name or similar. Thus, ``protocols ospfv3`` is perfectly "
"fine, but something like ``server-1`` is questionable at best."
msgstr ""
#: ../../contributing/development.rst:545 8aa1c3880cfc40a3bc1eab5426951cc7
msgid "Help String"
msgstr ""
#: ../../contributing/development.rst:547 b5fe3cf51bdc4504a9f20d93a02ffb21
msgid ""
"To ensure uniform look and feel, and improve readability, we should follow a"
" set of guidelines consistently."
msgstr ""
#: ../../contributing/development.rst:551 346e85e9486045c086a92ba1ff4064a6
msgid "Capitalization and punctuation"
msgstr ""
#: ../../contributing/development.rst:553 5f17c826c42e4d878388bcef714cd361
msgid ""
"The first word of every help string **must** be capitalized. There **must "
"not** be a period at the end of help strings."
msgstr ""
#: ../../contributing/development.rst:556 32aebf2319834080a10eb82c4fa3eb5b
msgid ""
"Rationale: this seems to be the unwritten standard in network device CLIs, "
"and a good aesthetic compromise."
msgstr ""
#: ../../contributing/development.rst:559
#: ../../contributing/development.rst:571
#: ../../contributing/development.rst:580
#: ../../contributing/development.rst:591
#: ../../contributing/development.rst:602
#: ../../contributing/development.rst:616 b658373b852b4a609c0134af02aa0c2e
#: b020e944556843c0be34cfa715d51f75 55720daa53754cd992e6a7188b3c98b1
#: 21c7e859df8f46429e239198ece35d81 3e50eb2086654ad99a7fe20d247d5bd6
#: fef35b651890497090c26be05c88d465
msgid "Examples:"
msgstr ""
#: ../../contributing/development.rst:561 cd0282b12e1547b48638e9b97e797bba
msgid "Good: \"Frobnication algorithm\""
msgstr ""
#: ../../contributing/development.rst:562 24a84860978448649189947b280a8e70
msgid "Bad: \"frobnication algorithm\""
msgstr ""
#: ../../contributing/development.rst:563 af8d7ef416ab47dc8b6dc2bde95fb3e9
msgid "Bad: \"Frobnication algorithm.\""
msgstr ""
#: ../../contributing/development.rst:564 f160d2d45016433aaa5e3fbd609c3558
msgid "Horrible: \"frobnication algorithm.\""
msgstr ""
#: ../../contributing/development.rst:567 40e524d8fd2c49d7b34bb899ae644116
msgid "Use of abbreviations and acronyms"
msgstr ""
#: ../../contributing/development.rst:569 50af60e0123b458e9fed80ea7be1076c
msgid "Abbreviations and acronyms **must** be capitalized."
msgstr ""
#: ../../contributing/development.rst:573
#: ../../contributing/development.rst:604 b0946251124045b6bf97ae3875f948e2
#: 6a299471787141aaa3a108e2a48f59b1
msgid "Good: \"TCP connection timeout\""
msgstr ""
#: ../../contributing/development.rst:574 8372511294954ee881facc029cdafcb2
msgid "Bad: \"tcp connection timeout\""
msgstr ""
#: ../../contributing/development.rst:575 01429f1227664923acf4a6f149c63e45
msgid "Horrible: \"Tcp connection timeout\""
msgstr ""
#: ../../contributing/development.rst:577 a7f34af1c0154c989e3375aa460e337a
msgid ""
"Acronyms also **must** be capitalized to visually distinguish them from "
"normal words:"
msgstr ""
#: ../../contributing/development.rst:582 243ffd888b2f4f839b4ce6c6bbbe8ced
msgid "Good: RADIUS (as in remote authentication for dial-in user services)"
msgstr ""
#: ../../contributing/development.rst:583 d9536a7cef704f19806ff14f207fe5a3
msgid ""
"Bad: radius (unless it's about the distance between a center of a circle and"
" any of its points)"
msgstr ""
#: ../../contributing/development.rst:586 598992d29c3948ce8b9daf8136ef6f3e
msgid ""
"Some abbreviations are traditionally written in mixed case. Generally, if it"
" contains words \"over\" or \"version\", the letter **should** be lowercase."
" If there's an accepted spelling (especially if defined by an RFC or another"
" standard), it **must** be followed."
msgstr ""
#: ../../contributing/development.rst:593 27c7117975c041fdaf4e23e9f07dd527
msgid "Good: PPPoE, IPsec"
msgstr ""
#: ../../contributing/development.rst:594 88c045836ff14ecba67f923acfdb69b2
msgid "Bad: PPPOE, IPSEC"
msgstr ""
#: ../../contributing/development.rst:595 ff188a95155a4a6d85c440ec112470b3
msgid "Bad: pppoe, ipsec"
msgstr ""
#: ../../contributing/development.rst:598 26901f5cbcfc4cfeb69da88966604704
msgid "Use of verbs"
msgstr ""
#: ../../contributing/development.rst:600 84ad88808fcd41389ab5a8384be44351
msgid "Verbs **should** be avoided. If a verb can be omitted, omit it."
msgstr ""
#: ../../contributing/development.rst:605 5831b1d1b4014dd9aa36d7a64a3c789a
msgid "Bad: \"Set TCP connection timeout\""
msgstr ""
#: ../../contributing/development.rst:607 b6ade6844d5647ad97e6856ca1041917
msgid ""
"If a verb is essential, keep it. For example, in the help text of ``set "
"system ipv6 disable-forwarding``, \"Disable IPv6 forwarding on all "
"interfaces\" is a perfectly justified wording."
msgstr ""
#: ../../contributing/development.rst:612 b6581bc8632d4b51868fb7bb484d2a2d
msgid "Prefer infinitives"
msgstr ""
#: ../../contributing/development.rst:614 c0fac675ba34446fb6f8d474ddfdcfd2
msgid ""
"Verbs, when they are necessary, **should** be in their infinitive form."
msgstr ""
#: ../../contributing/development.rst:618 39e33e702b2e410ebf16bd02cfb070d3
msgid "Good: \"Disable IPv6 forwarding\""
msgstr ""
#: ../../contributing/development.rst:619 4a2e1fff7f8543b8bbe833f719f226a7
msgid "Bad: \"Disables IPv6 forwarding\""
msgstr ""
#: ../../contributing/development.rst:622 09e1a88b6428413fa6337164fa4871a7
msgid "Migrating old CLI"
msgstr ""
#: ../../contributing/development.rst:628 7cc4489e656f403dbf220ae4b79a0b0c
msgid "Old concept/syntax"
msgstr ""
#: ../../contributing/development.rst:629 f72b04fe25894237a0958a5af8d662f7
msgid "New syntax"
msgstr ""
#: ../../contributing/development.rst:630 4325ebdacbc9451bad8ea85c3042e95c
msgid "Notes"
msgstr ""
#: ../../contributing/development.rst:631 b22ec3d4accd4dabb22f2df06947e955
msgid "mynode/node.def"
msgstr ""
#: ../../contributing/development.rst:632 813c64088d3a4faea8df9fe6674c8896
msgid "<node name=\"mynode\"> </node>"
msgstr ""
#: ../../contributing/development.rst:633 0cbc70a2a3274db4a02e28acc75595ba
msgid "Leaf nodes (nodes with values) use <leafNode> tag instead"
msgstr ""
#: ../../contributing/development.rst:634 7ff7be20e53b481a8916e6d09a247075
msgid "mynode/node.tag , tag:"
msgstr ""
#: ../../contributing/development.rst:635 d97d99660bb241d5b67e8a512404fd90
msgid "<tagNode name=\"mynode> </node>"
msgstr ""
#: ../../contributing/development.rst:637 e3fba8ff692a4819937093306b7bbfa3
msgid "help: My node"
msgstr ""
#: ../../contributing/development.rst:638 219da58427f64cf6813b5e62944eef14
msgid "<properties> <help>My node</help>"
msgstr ""
#: ../../contributing/development.rst:640 6b1d4eb28c9348f78bad00c0d36d8197
msgid "val_help: <format>; some string"
msgstr ""
#: ../../contributing/development.rst:641 b12810695e7a4ca0b5e89f0895691b71
msgid ""
"<properties> <valueHelp> <format> format </format> <description> some string"
" </description>"
msgstr ""
#: ../../contributing/development.rst:643 3d228a4ecdda42c5bcac5beda63079d8
msgid ""
"Do not add angle brackets around the format, they will be inserted "
"automatically"
msgstr ""
#: ../../contributing/development.rst:645 197955c5e68d4c169c2b3646fe5fab07
msgid "syntax:expression: pattern"
msgstr ""
#: ../../contributing/development.rst:646 f54ac7b073ba4aaca03d931f0dafab21
msgid "<properties> <constraint> <regex> ..."
msgstr ""
#: ../../contributing/development.rst:647 bb848432f84745389e12d3420fd9b200
msgid "<constraintErrorMessage> will be displayed on failure"
msgstr ""
#: ../../contributing/development.rst:648 318f28f6358641319bd6bd73ade0a5ce
msgid "syntax:expression: $VAR(@) in \"foo\", \"bar\", \"baz\""
msgstr ""
#: ../../contributing/development.rst:649
#: ../../contributing/development.rst:656
#: ../../contributing/development.rst:676
#: ../../contributing/development.rst:679
#: ../../contributing/development.rst:682 848f62017cff42f48932eec178fca271
#: 5409dd2a521b48988e2711e3b1cb9ecb e2b50ef0506242328052488e3c20eef9
#: 7d71973bda64400db9774df185a7bc69 077c812f057a447bbf7909f4db0f1fee
msgid "None"
msgstr ""
#: ../../contributing/development.rst:650 f437eb411a6545939babd65caf3d54f8
msgid "Use regex"
msgstr ""
#: ../../contributing/development.rst:651 f3226b9b99e94e7c90617691c1b3db82
msgid "syntax:expression: exec ..."
msgstr ""
#: ../../contributing/development.rst:652 f0f39c43c9d24035b7799ddee422ec16
msgid "<properties> <constraint> <validator> <name =\"foo\" argument=\"bar\">"
msgstr ""
#: ../../contributing/development.rst:653 80caa3fd0b414be5948828228f8f56bc
msgid ""
"\"${vyos_libexecdir}/validators/foo bar $VAR(@)\" will be executed, "
"<constraintErrorMessage> will be displayed on failure"
msgstr ""
#: ../../contributing/development.rst:655 cfaefb230d494308868c1a2b1ccd0cbd
msgid "syntax:expression: (arithmetic expression)"
msgstr ""
#: ../../contributing/development.rst:657 12d7c3f6f5674daeaace5931c0ca8efd
msgid ""
"External arithmetic validator may be added if there's demand, complex "
"validation is better left to commit-time scripts"
msgstr ""
#: ../../contributing/development.rst:659 55a9e6825cf24261909a2a1865bee2a1
msgid "priority: 999"
msgstr ""
#: ../../contributing/development.rst:660 359045dbc11949d2846edcbb1823d4b2
msgid "<properties> <priority>999</priority>"
msgstr ""
#: ../../contributing/development.rst:661 b35d3f18f65b447baea445023b722c2f
msgid ""
"Please leave a comment explaining why the priority was chosen (e.g. \"after "
"interfaces are configured\")"
msgstr ""
#: ../../contributing/development.rst:663 f2fc7e7db46d410a8d5a7fd01488447f
msgid "multi:"
msgstr ""
#: ../../contributing/development.rst:664 a5c47353b4e240a897d9989c6b4cc418
msgid "<properties> <multi/>"
msgstr ""
#: ../../contributing/development.rst:665 d22bd39f7baa49ac828aff803f93a5b3
msgid "Only applicable to leaf nodes"
msgstr ""
#: ../../contributing/development.rst:666 8b603494e75748a5950b48cf7bdc1e76
msgid "allowed: echo foo bar"
msgstr ""
#: ../../contributing/development.rst:667 31b948d3cf3e49aba60122c0e5b18fa7
msgid "<properties> <completionHelp> <list> foo bar </list>"
msgstr ""
#: ../../contributing/development.rst:669 ae1fa30e898b4b9880386b11c2656d88
msgid "allowed: cli-shell-api listNodes vpn ipsec esp-group"
msgstr ""
#: ../../contributing/development.rst:670 34ff9f59e15f4b0c89fdc50bf26ae5cf
msgid "<properties> <completionHelp> <path> vpn ipsec esp-group </path> ..."
msgstr ""
#: ../../contributing/development.rst:672 0acda12d528c4983a8bc24e215e2e938
msgid "allowed: /path/to/script"
msgstr ""
#: ../../contributing/development.rst:673 e50fd5d7b645484e9f85438fcaeee425
msgid "<properties> <completionHelp> <script> /path/to/script </script> ..."
msgstr ""
#: ../../contributing/development.rst:675 88e7993d35574ae28c11ed123d2892d0
msgid "default:"
msgstr ""
#: ../../contributing/development.rst:677 989f6e68960c448b9b140d8422bea4c7
msgid "Move default values to scripts"
msgstr ""
#: ../../contributing/development.rst:678 1f79f35408e34bd28365ef547a70792b
msgid "commit:expression:"
msgstr ""
#: ../../contributing/development.rst:680 1a95ffbafac2474cb1822de847539037
msgid ""
"All commit time checks should be in the verify() function of the script"
msgstr ""
#: ../../contributing/development.rst:681 6abc6c67084f4588993c0ad9fdf45c6c
msgid "begin:/create:/delete:"
msgstr ""
#: ../../contributing/development.rst:683 dae250339d384fe998af358aeaa8edc1
msgid "All logic should be in the scripts"
msgstr ""
#: ../../contributing/development.rst:686 0a761544b2394577b208ceae0173ee7d
msgid "Continuous Integration"
msgstr ""
#: ../../contributing/development.rst:688 15570252713643b9b14be94fe82afaf3
msgid ""
"VyOS makes use of Jenkins_ as our Continuous Integration (CI) service. Our "
"`VyOS CI`_ server is publicly accessible here: https://ci.vyos.net. You can "
"get a brief overview of all required components shipped in a VyOS ISO."
msgstr ""
#: ../../contributing/development.rst:692 316fa05e045744999e29a99d37461ab6
msgid ""
"To build our modules we utilize a CI/CD Pipeline script. Each and every VyOS"
" component comes with it's own ``Jenkinsfile`` which is (more or less) a "
"copy. The Pipeline utilizes the Docker container from the :ref:`build_iso` "
"section - but instead of building it from source on every run, we rather "
"always fetch a fresh copy (if needed) from Dockerhub_."
msgstr ""
#: ../../contributing/development.rst:698 529a7e068b0f411c9e71f107c09baac3
msgid ""
"Each module is build on demand if a new commit on the branch in question is "
"found. After a successful run the resulting Debian Package(s) will be "
"deployed to our Debian repository which is used during build time. It is "
"located here: http://dev.packages.vyos.net/repositories/."
msgstr ""
|