Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F38643635
formatversions.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
formatversions.py
View Options
# Copyright 2019 VyOS maintainers and contributors <maintainers@vyos.io>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this library. If not, see <http://www.gnu.org/licenses/>.
import
sys
import
os
import
re
import
fileinput
def
read_vyatta_versions
(
config_file
):
config_file_versions
=
{}
with
open
(
config_file
,
'r'
)
as
config_file_handle
:
for
config_line
in
config_file_handle
:
if
re
.
match
(
r'/\* === vyatta-config-version:.+=== \*/$'
,
config_line
):
if
not
re
.
match
(
r'/\* === vyatta-config-version:\s+"([\w,-]+@\d+:)+([\w,-]+@\d+)"\s+=== \*/$'
,
config_line
):
raise
ValueError
(
"malformed configuration string: "
"{}"
.
format
(
config_line
))
for
pair
in
re
.
findall
(
r'([\w,-]+)@(\d+)'
,
config_line
):
config_file_versions
[
pair
[
0
]]
=
int
(
pair
[
1
])
return
config_file_versions
def
read_vyos_versions
(
config_file
):
config_file_versions
=
{}
with
open
(
config_file
,
'r'
)
as
config_file_handle
:
for
config_line
in
config_file_handle
:
if
re
.
match
(
r'// vyos-config-version:.+'
,
config_line
):
if
not
re
.
match
(
r'// vyos-config-version:\s+"([\w,-]+@\d+:)+([\w,-]+@\d+)"\s*'
,
config_line
):
raise
ValueError
(
"malformed configuration string: "
"{}"
.
format
(
config_line
))
for
pair
in
re
.
findall
(
r'([\w,-]+)@(\d+)'
,
config_line
):
config_file_versions
[
pair
[
0
]]
=
int
(
pair
[
1
])
return
config_file_versions
def
remove_versions
(
config_file
):
"""
Remove old version string.
"""
for
line
in
fileinput
.
input
(
config_file
,
inplace
=
True
):
if
re
.
match
(
r'/\* Warning:.+ \*/$'
,
line
):
continue
if
re
.
match
(
r'/\* === vyatta-config-version:.+=== \*/$'
,
line
):
continue
if
re
.
match
(
r'/\* Release version:.+ \*/$'
,
line
):
continue
if
re
.
match
(
'// vyos-config-version:.+'
,
line
):
continue
if
re
.
match
(
'// Warning:.+'
,
line
):
continue
if
re
.
match
(
'// Release version:.+'
,
line
):
continue
sys
.
stdout
.
write
(
line
)
def
format_versions_string
(
config_versions
):
cfg_keys
=
list
(
config_versions
.
keys
())
cfg_keys
.
sort
()
component_version_strings
=
[]
for
key
in
cfg_keys
:
cfg_vers
=
config_versions
[
key
]
component_version_strings
.
append
(
'{}@{}'
.
format
(
key
,
cfg_vers
))
separator
=
":"
component_version_string
=
separator
.
join
(
component_version_strings
)
return
component_version_string
def
write_vyatta_versions_foot
(
config_file
,
component_version_string
,
os_version_string
):
if
config_file
:
with
open
(
config_file
,
'a'
)
as
config_file_handle
:
config_file_handle
.
write
(
'/* Warning: Do not remove the following line. */
\n
'
)
config_file_handle
.
write
(
'/* === vyatta-config-version: "{}" === */
\n
'
.
format
(
component_version_string
))
config_file_handle
.
write
(
'/* Release version: {} */
\n
'
.
format
(
os_version_string
))
else
:
sys
.
stdout
.
write
(
'/* Warning: Do not remove the following line. */
\n
'
)
sys
.
stdout
.
write
(
'/* === vyatta-config-version: "{}" === */
\n
'
.
format
(
component_version_string
))
sys
.
stdout
.
write
(
'/* Release version: {} */
\n
'
.
format
(
os_version_string
))
def
write_vyos_versions_foot
(
config_file
,
component_version_string
,
os_version_string
):
if
config_file
:
with
open
(
config_file
,
'a'
)
as
config_file_handle
:
config_file_handle
.
write
(
'// Warning: Do not remove the following line.
\n
'
)
config_file_handle
.
write
(
'// vyos-config-version: "{}"
\n
'
.
format
(
component_version_string
))
config_file_handle
.
write
(
'// Release version: {}
\n
'
.
format
(
os_version_string
))
else
:
sys
.
stdout
.
write
(
'// Warning: Do not remove the following line.
\n
'
)
sys
.
stdout
.
write
(
'// vyos-config-version: "{}"
\n
'
.
format
(
component_version_string
))
sys
.
stdout
.
write
(
'// Release version: {}
\n
'
.
format
(
os_version_string
))
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Mon, Dec 15, 5:35 PM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3057392
Default Alt Text
formatversions.py (4 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment