|
|
@ -21,8 +21,7 @@ from os import path
|
|
|
|
from calculate.lib.datavars import (Variable, VariableError,
|
|
|
|
from calculate.lib.datavars import (Variable, VariableError,
|
|
|
|
ReadonlyVariable, ReadonlyTableVariable, TableVariable, FieldValue,
|
|
|
|
ReadonlyVariable, ReadonlyTableVariable, TableVariable, FieldValue,
|
|
|
|
SimpleDataVars, DataVarsError)
|
|
|
|
SimpleDataVars, DataVarsError)
|
|
|
|
from calculate.lib.utils.portage import searchProfile
|
|
|
|
from calculate.lib.utils.files import readFile, \
|
|
|
|
from calculate.lib.utils.files import readLinesFile, readFile, makeDirectory, \
|
|
|
|
|
|
|
|
listDirectory, process, pathJoin
|
|
|
|
listDirectory, process, pathJoin
|
|
|
|
|
|
|
|
|
|
|
|
from calculate.lib.configparser import ConfigParser
|
|
|
|
from calculate.lib.configparser import ConfigParser
|
|
|
@ -37,7 +36,6 @@ from calculate.lib.variables import env
|
|
|
|
from calculate.update.update_info import UpdateInfo
|
|
|
|
from calculate.update.update_info import UpdateInfo
|
|
|
|
import urllib2
|
|
|
|
import urllib2
|
|
|
|
import time
|
|
|
|
import time
|
|
|
|
from functools import partial
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_ = lambda x:x
|
|
|
|
_ = lambda x:x
|
|
|
|
|
|
|
|
|
|
|
@ -121,8 +119,7 @@ class VariableClUpdateRepData(ReadonlyTableVariable):
|
|
|
|
source = ['cl_update_rep_name',
|
|
|
|
source = ['cl_update_rep_name',
|
|
|
|
'cl_update_rep_url',
|
|
|
|
'cl_update_rep_url',
|
|
|
|
'cl_update_rep_path',
|
|
|
|
'cl_update_rep_path',
|
|
|
|
'cl_update_rep_rev',
|
|
|
|
'cl_update_rep_rev']
|
|
|
|
'cl_update_branch_name']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateRepName(Variable):
|
|
|
|
class VariableClUpdateRepName(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -182,6 +179,7 @@ class VariableClUpdateRepPath(ReadonlyVariable):
|
|
|
|
yield path.join(repPath, name)
|
|
|
|
yield path.join(repPath, name)
|
|
|
|
return list(generatePaths(self.Get('cl_update_rep_name')))
|
|
|
|
return list(generatePaths(self.Get('cl_update_rep_name')))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateRepRev(Variable):
|
|
|
|
class VariableClUpdateRepRev(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Ревизии до которых необходимо обновить репозитории
|
|
|
|
Ревизии до которых необходимо обновить репозитории
|
|
|
@ -189,25 +187,31 @@ class VariableClUpdateRepRev(Variable):
|
|
|
|
type = "list"
|
|
|
|
type = "list"
|
|
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
def get(self):
|
|
|
|
"""
|
|
|
|
cp = ConfigParser()
|
|
|
|
Если cl_update_rep=rev, то профиль просматривается на нахождене
|
|
|
|
revisions = self.Get('update.cl_update_binhost_revisions')
|
|
|
|
в нем rev файла (используется более частный вариант,
|
|
|
|
if revisions:
|
|
|
|
как с calculate.env), файл содержит строки ключ=значение, где
|
|
|
|
cp.read_string(unicode(revisions[0]))
|
|
|
|
ключ - название репозитория, значение - ревизия до которой нужно
|
|
|
|
|
|
|
|
обновиться
|
|
|
|
branch = self.Get('cl_update_branch')
|
|
|
|
"""
|
|
|
|
|
|
|
|
if self.Get('cl_update_rep') == 'rev':
|
|
|
|
def generateBranch():
|
|
|
|
revPaths = searchProfile(self.Get('cl_profile_system'),
|
|
|
|
for repname, branchname in zip(
|
|
|
|
"rev")
|
|
|
|
self.Get('cl_update_rep_name'),
|
|
|
|
if revPaths:
|
|
|
|
self.Get('cl_update_branch_name')):
|
|
|
|
revPath = revPaths[-1]
|
|
|
|
if branchname == "binhost":
|
|
|
|
dictNamesRevs = dict(map(lambda x:x.strip().partition('=')[::2],
|
|
|
|
yield cp.get("vcs", repname, fallback=branch)
|
|
|
|
readLinesFile(revPath)))
|
|
|
|
else:
|
|
|
|
return map(lambda x:dictNamesRevs.get(x,"last"),
|
|
|
|
yield branchname
|
|
|
|
self.Get('cl_update_rep_name'))
|
|
|
|
return list(generateBranch())
|
|
|
|
return ["last"]*len(self.Get('cl_update_rep_name'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBranch(TableVariable):
|
|
|
|
class VariableClUpdateBranch(Variable):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Ветка на которую будет обновляться репозиторий если -getbinpkg
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
value = "master"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBranchData(TableVariable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Выбор веток репозиториев до которых необходимо обновиться
|
|
|
|
Выбор веток репозиториев до которых необходимо обновиться
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -241,7 +245,8 @@ class VariableClUpdateBranchRep(ReadonlyVariable):
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhostData(ReadonlyTableVariable):
|
|
|
|
class VariableClUpdateBinhostData(ReadonlyTableVariable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Содержимое файла revisions
|
|
|
|
Таблица содержащая
|
|
|
|
|
|
|
|
binhost/содержимое файла ревизий/время доступа
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
source = ["cl_update_binhost_host",
|
|
|
|
source = ["cl_update_binhost_host",
|
|
|
|
"cl_update_binhost_revisions",
|
|
|
|
"cl_update_binhost_revisions",
|
|
|
@ -249,24 +254,23 @@ class VariableClUpdateBinhostData(ReadonlyTableVariable):
|
|
|
|
|
|
|
|
|
|
|
|
def check_binhost(self, binhost):
|
|
|
|
def check_binhost(self, binhost):
|
|
|
|
revision_files = [path.join(binhost, x)
|
|
|
|
revision_files = [path.join(binhost, x)
|
|
|
|
for x in self.Get('cl_update_revision_path')]
|
|
|
|
for x in self.Get('cl_update_binhost_revision_path')]
|
|
|
|
timeout = self.GetInteger('cl_update_binhost_timeout')
|
|
|
|
timeout = self.GetInteger('cl_update_binhost_timeout')
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
data = None
|
|
|
|
data = None
|
|
|
|
t = time.time()
|
|
|
|
|
|
|
|
for fn in revision_files:
|
|
|
|
for fn in revision_files:
|
|
|
|
if data is None:
|
|
|
|
if data is None:
|
|
|
|
data = urllib2.urlopen(fn, timeout=timeout).read()
|
|
|
|
data = urllib2.urlopen(fn, timeout=timeout).read()
|
|
|
|
elif data != urllib2.urlopen(fn, timeout=timeout).read():
|
|
|
|
elif data != urllib2.urlopen(fn, timeout=timeout).read():
|
|
|
|
return "", str(-1)
|
|
|
|
return ""
|
|
|
|
return data, str(int((time.time() - t)*1000))
|
|
|
|
return data
|
|
|
|
except urllib2.URLError:
|
|
|
|
except urllib2.URLError:
|
|
|
|
return "", str(-1)
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
|
|
re_revison = re.compile("\w+=(\w+)")
|
|
|
|
re_revison = re.compile("\w+=(\w+)")
|
|
|
|
|
|
|
|
|
|
|
|
def binhost_key(self, data):
|
|
|
|
def binhost_key(self, data):
|
|
|
|
host, data, time = data
|
|
|
|
host, t = data
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
cp = ConfigParser()
|
|
|
|
cp = ConfigParser()
|
|
|
|
cp.read_string(data.decode('utf-8'))
|
|
|
|
cp.read_string(data.decode('utf-8'))
|
|
|
@ -277,27 +281,59 @@ class VariableClUpdateBinhostData(ReadonlyTableVariable):
|
|
|
|
data,
|
|
|
|
data,
|
|
|
|
-int(time))
|
|
|
|
-int(time))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_timestamp(self, binhost):
|
|
|
|
|
|
|
|
DAY = 60 * 60 * 24
|
|
|
|
|
|
|
|
timeout = self.GetInteger('cl_update_binhost_timeout')
|
|
|
|
|
|
|
|
timestamp_file = path.join(binhost,
|
|
|
|
|
|
|
|
self.Get('cl_update_binhost_timestamp_path'))
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
t = time.time()
|
|
|
|
|
|
|
|
data = urllib2.urlopen(timestamp_file, timeout=timeout).read().strip()
|
|
|
|
|
|
|
|
if data.isdigit() and t - int(data) < 5 * DAY:
|
|
|
|
|
|
|
|
return data, int((time.time() - t)*1000)
|
|
|
|
|
|
|
|
except urllib2.URLError as e:
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
return "", -1
|
|
|
|
|
|
|
|
|
|
|
|
def get(self, hr=False):
|
|
|
|
def get(self, hr=False):
|
|
|
|
def generate():
|
|
|
|
binhost = self.Get('cl_update_binhost')
|
|
|
|
recheck = self.GetBool('cl_update_binhost_recheck_set')
|
|
|
|
recheck = self.GetBool('cl_update_binhost_recheck_set')
|
|
|
|
base_dn = self.Get('cl_update_binhost')
|
|
|
|
|
|
|
|
for host in [base_dn] + [x for x in self.Get('cl_update_binhosts')
|
|
|
|
def generate_by_timestamp():
|
|
|
|
if x != base_dn]:
|
|
|
|
for host in self.Get('cl_update_binhosts'):
|
|
|
|
if host:
|
|
|
|
if host:
|
|
|
|
data, t = self.check_binhost(host)
|
|
|
|
ts_content, duration = self.get_timestamp(host)
|
|
|
|
yield host, data, str(t)
|
|
|
|
if ts_content:
|
|
|
|
if not recheck and t >= 0 and base_dn == host:
|
|
|
|
yield host, ts_content, str(duration)
|
|
|
|
break
|
|
|
|
if not recheck and binhost:
|
|
|
|
return list(sorted(generate(), key=self.binhost_key, reverse=True))
|
|
|
|
ts, t = self.get_timestamp(binhost)
|
|
|
|
|
|
|
|
if ts:
|
|
|
|
|
|
|
|
data = self.check_binhost(binhost)
|
|
|
|
|
|
|
|
if data:
|
|
|
|
|
|
|
|
return [[binhost, data, str(t)]]
|
|
|
|
|
|
|
|
for host, ts, t in sorted(generate_by_timestamp(),
|
|
|
|
|
|
|
|
key=lambda x: (-int(x[1]), int(x[2]))):
|
|
|
|
|
|
|
|
data = self.check_binhost(host)
|
|
|
|
|
|
|
|
if data:
|
|
|
|
|
|
|
|
return [[host, data, str(t)]]
|
|
|
|
|
|
|
|
return [[]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhostRecheckSet(Variable):
|
|
|
|
class VariableClUpdateBinhostRecheckSet(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Принудительно обновить binhost
|
|
|
|
Принудительно обновить binhost
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
type = "bool"
|
|
|
|
value = "off"
|
|
|
|
value = "off"
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhostHost(FieldValue,ReadonlyVariable):
|
|
|
|
opt = ["--recheck-binhost"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def init(self):
|
|
|
|
|
|
|
|
self.help = _("re-check binary hosts")
|
|
|
|
|
|
|
|
self.label = _("Re-check binary hosts")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhostHost(FieldValue, ReadonlyVariable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Список имен прочих репозиториев
|
|
|
|
Список имен прочих репозиториев
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -321,12 +357,6 @@ class VariableClUpdateBinhostTime(FieldValue,ReadonlyVariable):
|
|
|
|
source_variable = "cl_update_binhost_data"
|
|
|
|
source_variable = "cl_update_binhost_data"
|
|
|
|
column = 2
|
|
|
|
column = 2
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateRepoTagSet(Variable):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Флаг принудительного использования тэгов вместо веток
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
type = "bool"
|
|
|
|
|
|
|
|
value = "on"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBranchName(Variable):
|
|
|
|
class VariableClUpdateBranchName(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -338,29 +368,14 @@ class VariableClUpdateBranchName(Variable):
|
|
|
|
self.label = _("Branches")
|
|
|
|
self.label = _("Branches")
|
|
|
|
|
|
|
|
|
|
|
|
def choice(self):
|
|
|
|
def choice(self):
|
|
|
|
return ["master", "develop", "update"]
|
|
|
|
return ["master", "develop", "update", "binhost"]
|
|
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
def get(self):
|
|
|
|
cp = ConfigParser()
|
|
|
|
if "getbinpkg" in self.Get('cl_features'):
|
|
|
|
cp.read_string(unicode(
|
|
|
|
return ["binhost" for x in self.Get('cl_update_rep_name')]
|
|
|
|
self.Get('update.cl_update_binhost_revisions')[0]))
|
|
|
|
else:
|
|
|
|
repo_tag = self.GetBool('update.cl_update_repo_tag_set')
|
|
|
|
branch = self.Get('cl_update_branch')
|
|
|
|
|
|
|
|
return [branch for x in self.Get('cl_update_rep_name')]
|
|
|
|
def generateBranch():
|
|
|
|
|
|
|
|
git = Git()
|
|
|
|
|
|
|
|
for reppath, repname in zip(self.Get('cl_update_rep_path'),
|
|
|
|
|
|
|
|
self.Get('cl_update_rep_name')):
|
|
|
|
|
|
|
|
tag = cp.get("vcs", repname, fallback="master")
|
|
|
|
|
|
|
|
try:
|
|
|
|
|
|
|
|
if (repo_tag or git.isTagRepository(
|
|
|
|
|
|
|
|
reppath) or not git.is_git(reppath)):
|
|
|
|
|
|
|
|
yield tag
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
yield git.getBranch(reppath) or tag
|
|
|
|
|
|
|
|
except GitError:
|
|
|
|
|
|
|
|
yield tag
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return list(generateBranch())
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateSyncRep(Variable):
|
|
|
|
class VariableClUpdateSyncRep(Variable):
|
|
|
@ -657,7 +672,7 @@ class VariableClUpdateProfileLinuxFullname(ReadonlyVariable):
|
|
|
|
if subname:
|
|
|
|
if subname:
|
|
|
|
return "%s %s %s" % (linuxname, linuxver, subname)
|
|
|
|
return "%s %s %s" % (linuxname, linuxver, subname)
|
|
|
|
return "%s %s" %(linuxname,linuxver)
|
|
|
|
return "%s %s" %(linuxname,linuxver)
|
|
|
|
except DataVarsError:
|
|
|
|
except DataVarsError as s:
|
|
|
|
raise VariableError("Wrong Calculate Linux profile")
|
|
|
|
raise VariableError("Wrong Calculate Linux profile")
|
|
|
|
return ""
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
|
@ -914,6 +929,7 @@ class VariableClUpdateProfileBranch(Variable):
|
|
|
|
|
|
|
|
|
|
|
|
storage = "cl_update_profile_storage"
|
|
|
|
storage = "cl_update_profile_storage"
|
|
|
|
url = "cl_update_profile_url"
|
|
|
|
url = "cl_update_profile_url"
|
|
|
|
|
|
|
|
value = DEFAULT_BRANCH
|
|
|
|
|
|
|
|
|
|
|
|
def init(self):
|
|
|
|
def init(self):
|
|
|
|
self.label = _("Repository branch")
|
|
|
|
self.label = _("Repository branch")
|
|
|
@ -928,16 +944,6 @@ class VariableClUpdateProfileBranch(Variable):
|
|
|
|
#except GitError as e:
|
|
|
|
#except GitError as e:
|
|
|
|
# raise VariableError(str(e))
|
|
|
|
# raise VariableError(str(e))
|
|
|
|
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
|
|
|
rep_set = self.Get(self.storage)
|
|
|
|
|
|
|
|
url = self.Get(self.url)
|
|
|
|
|
|
|
|
#print url, rep_set.is_local(url, branch=None)
|
|
|
|
|
|
|
|
if rep_set.is_local(url, branch=None):
|
|
|
|
|
|
|
|
rep = rep_set.get_repository(url, branch=None)
|
|
|
|
|
|
|
|
git = Git()
|
|
|
|
|
|
|
|
return git.getBranch(rep.directory)
|
|
|
|
|
|
|
|
return DEFAULT_BRANCH
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClProfileRepository(ReadonlyVariable):
|
|
|
|
class VariableClProfileRepository(ReadonlyVariable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -1014,6 +1020,16 @@ class VariableClUpdateProfileRepository(ReadonlyVariable):
|
|
|
|
except GitError:
|
|
|
|
except GitError:
|
|
|
|
return ""
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateProfileRepositoryName(ReadonlyVariable):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Название репозитория, из которого будут извлечены профили
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
def get(self):
|
|
|
|
|
|
|
|
rep = self.Get('cl_update_profile_repository')
|
|
|
|
|
|
|
|
if rep:
|
|
|
|
|
|
|
|
return rep.repo_name
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateProfileData(VariableClProfileData):
|
|
|
|
class VariableClUpdateProfileData(VariableClProfileData):
|
|
|
|
source = ["cl_update_profile_fullname",
|
|
|
|
source = ["cl_update_profile_fullname",
|
|
|
@ -1166,9 +1182,11 @@ class DataVarsUpdateProfile(SimpleDataVars):
|
|
|
|
env.VariableClTemplateLocation(),
|
|
|
|
env.VariableClTemplateLocation(),
|
|
|
|
env.VariableClTemplatePath(),
|
|
|
|
env.VariableClTemplatePath(),
|
|
|
|
env.VariableClEmergeConfig(systemRoot=chroot_path),
|
|
|
|
env.VariableClEmergeConfig(systemRoot=chroot_path),
|
|
|
|
|
|
|
|
env.VariableClFeatures(),
|
|
|
|
VariableClUpdateRepData(section="update"),
|
|
|
|
VariableClUpdateRepData(section="update"),
|
|
|
|
VariableClUpdateRepPath(section="update"),
|
|
|
|
VariableClUpdateRepPath(section="update"),
|
|
|
|
VariableClUpdateRepRev(section="update"),
|
|
|
|
VariableClUpdateRepRev(section="update"),
|
|
|
|
|
|
|
|
VariableClUpdateBranch(section="update"),
|
|
|
|
VariableClUpdateBranchName(section="update"),
|
|
|
|
VariableClUpdateBranchName(section="update"),
|
|
|
|
VariableClUpdateLaymanConfig(section="update"),
|
|
|
|
VariableClUpdateLaymanConfig(section="update"),
|
|
|
|
VariableClUpdateLaymanStorage(section="update"),
|
|
|
|
VariableClUpdateLaymanStorage(section="update"),
|
|
|
@ -1182,10 +1200,11 @@ class DataVarsUpdateProfile(SimpleDataVars):
|
|
|
|
VariableClUpdateBinhostRevisions(section="update"),
|
|
|
|
VariableClUpdateBinhostRevisions(section="update"),
|
|
|
|
VariableClUpdateBinhostTime(section="update"),
|
|
|
|
VariableClUpdateBinhostTime(section="update"),
|
|
|
|
VariableClUpdateBinhostTimeout(section="update"),
|
|
|
|
VariableClUpdateBinhostTimeout(section="update"),
|
|
|
|
|
|
|
|
VariableClUpdateBinhostTimestampPath(section="update"),
|
|
|
|
VariableClUpdateBinhosts(section="update"),
|
|
|
|
VariableClUpdateBinhosts(section="update"),
|
|
|
|
VariableClUpdateRepoTagSet(section="update"),
|
|
|
|
VariableClUpdateBinhostRevisionPath(section="update"),
|
|
|
|
VariableClUpdateRevisionPath(section="update"),
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
# TODO: при переключении профиля использовать master ветки
|
|
|
|
self.cache['cl_profile_system'] = profile
|
|
|
|
self.cache['cl_profile_system'] = profile
|
|
|
|
self.cache['cl_chroot_path'] = chroot_path
|
|
|
|
self.cache['cl_chroot_path'] = chroot_path
|
|
|
|
if recheck is not None:
|
|
|
|
if recheck is not None:
|
|
|
@ -1375,20 +1394,15 @@ class VariableClUpdateBinhosts(Variable):
|
|
|
|
Список хостов с бинарными обновлениями
|
|
|
|
Список хостов с бинарными обновлениями
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
type = "list"
|
|
|
|
type = "list"
|
|
|
|
value = ["ftp://ftp.calculate.ru/pub", 'ftp://localhost/pub']
|
|
|
|
value = ["ftp://ftp.calculate.ru/pub"]
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhost(Variable):
|
|
|
|
class VariableClUpdateBinhost(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Хост с бинарными обновлениями
|
|
|
|
Хост с бинарными обновлениями
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
def get(self):
|
|
|
|
value = ""
|
|
|
|
return ""
|
|
|
|
|
|
|
|
#binhosts = self.Get('cl_update_binhosts')
|
|
|
|
|
|
|
|
#if binhosts:
|
|
|
|
|
|
|
|
# return self.Get('cl_update_binhosts')[0]
|
|
|
|
|
|
|
|
#return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateRevisionPath(Variable):
|
|
|
|
class VariableClUpdateBinhostRevisionPath(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Путь до revisions файлов
|
|
|
|
Путь до revisions файлов
|
|
|
|
"""
|
|
|
|
"""
|
|
|
@ -1400,9 +1414,15 @@ class VariableClUpdateRevisionPath(Variable):
|
|
|
|
"calculate/grp/x/ini.env"
|
|
|
|
"calculate/grp/x/ini.env"
|
|
|
|
]
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhostTimestampPath(Variable):
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
Путь до файла timestamp
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
value = "calculate/grp/timestamp"
|
|
|
|
|
|
|
|
|
|
|
|
class VariableClUpdateBinhostTimeout(Variable):
|
|
|
|
class VariableClUpdateBinhostTimeout(Variable):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
Таймаут на проверку одного binhost
|
|
|
|
Таймаут на проверку одного binhost
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
type = "int"
|
|
|
|
type = "int"
|
|
|
|
value = "15"
|
|
|
|
value = "5"
|
|
|
|