2018-01-19 02:31:31 +03:00
|
|
|
#!/usr/bin/env python3
|
2019-06-20 02:58:25 +03:00
|
|
|
# Copyright (c) Facebook, Inc. and its affiliates.
|
2018-01-19 02:31:31 +03:00
|
|
|
#
|
2019-06-20 02:58:25 +03:00
|
|
|
# This software may be used and distributed according to the terms of the
|
|
|
|
# GNU General Public License version 2.
|
2018-01-19 02:31:31 +03:00
|
|
|
|
|
|
|
import subprocess
|
2018-08-04 00:54:10 +03:00
|
|
|
from typing import Optional, Tuple, cast
|
2018-05-10 07:33:49 +03:00
|
|
|
|
2018-08-16 07:34:10 +03:00
|
|
|
from .config import EdenInstance
|
2018-01-19 02:31:31 +03:00
|
|
|
|
|
|
|
|
|
|
|
def get_installed_eden_rpm_version() -> str:
|
2018-05-10 07:33:49 +03:00
|
|
|
proc = subprocess.run(
|
|
|
|
["rpm", "-q", "fb-eden", "--queryformat", "%{version}-%{release}"],
|
|
|
|
stdout=subprocess.PIPE,
|
|
|
|
encoding="utf-8",
|
|
|
|
)
|
2018-01-31 08:40:55 +03:00
|
|
|
if proc.returncode != 0:
|
|
|
|
return "<Not Installed>"
|
2018-08-04 00:54:10 +03:00
|
|
|
return cast(str, proc.stdout)
|
2018-01-19 02:31:31 +03:00
|
|
|
|
2018-05-10 07:33:49 +03:00
|
|
|
|
2018-01-19 02:31:31 +03:00
|
|
|
# returns (runing_version, release) tuple
|
|
|
|
def get_running_eden_version_parts(
|
2018-08-16 07:34:10 +03:00
|
|
|
instance: EdenInstance
|
2018-05-10 07:33:49 +03:00
|
|
|
) -> Tuple[Optional[str], Optional[str]]:
|
2018-08-16 07:34:10 +03:00
|
|
|
bi = instance.get_server_build_info()
|
2018-05-10 07:33:49 +03:00
|
|
|
return (bi.get("build_package_version"), bi.get("build_package_release"))
|
2018-01-19 02:31:31 +03:00
|
|
|
|
|
|
|
|
2018-05-10 07:33:49 +03:00
|
|
|
def format_running_eden_version(parts: Tuple[Optional[str], Optional[str]]) -> str:
|
2018-01-19 02:31:31 +03:00
|
|
|
running_version, release = parts
|
|
|
|
if running_version is None:
|
2018-05-10 07:33:49 +03:00
|
|
|
running_version = ""
|
2018-01-19 02:31:31 +03:00
|
|
|
if release is None:
|
2018-05-10 07:33:49 +03:00
|
|
|
release = ""
|
|
|
|
return f"{running_version}-{release}"
|
2018-01-19 02:31:31 +03:00
|
|
|
|
|
|
|
|
2018-08-16 07:34:10 +03:00
|
|
|
def get_running_eden_version(instance: EdenInstance) -> str:
|
|
|
|
return format_running_eden_version(get_running_eden_version_parts(instance))
|