blob: c0b8992a27d649100a3ddba5ab0acfe253c0d5fd [file] [log] [blame]
#
# Monitor status of git updates
#
=begin
Sample input: See DATA section
Output status level can be:
Success - workspace is up to date
Info - one or more files updated
Warning - partial response
Danger - unexpected text in log file
=end
require 'fileutils'
SUMMARY_RE = %r{^ \d+ files? changed(, \d+ insertions?\(\+\))?(, \d+ deletions?\(-\))?$}
def Monitor.git(previous_status)
logdir = File.expand_path('../../../logs', __FILE__)
log = File.join(logdir, 'git-pull')
archive = File.join(logdir, 'archive')
FileUtils.mkdir(archive) unless File.directory?(archive)
# read cron log
if __FILE__ == $0 # unit test
fdata = DATA.read
else
fdata = File.open(log, 'r:UTF-8') do |file|
file.flock(File::LOCK_EX)
file.read
end
end
updates = fdata.split(%r{\n(?:/\w+)*/srv/git/})[1..-1]
status = {}
seen_level = {}
# extract status for each repository
updates.each do |update|
show 'update', update
level = 'success'
title = nil
data = revision = update[/^(Already up-to-date.|Updating [0-9a-f]+\.\.[0-9a-f]+|HEAD is now at [0-9a-f]+.+)$/]
title = update[SUMMARY_RE]
show 'data', data
lines = update.split("\n")
repository = lines.shift.to_sym
show 'repository', repository
start_ignores = [
'Already ',
'Your branch is up-to-date with',
'Your branch is up to date with',
'Your branch is behind',
' (use "git pull" ',
'Fast-forward',
'Updating ',
' create mode ',
' delete mode ',
' rename ',
' mode change ',
'HEAD is now at ',
# TODO Should these 3 lines be handled differently?
'From git://',
' * [new branch]',
' * [new tag]',
'From https://',
'Auto packing the repository',
'See "git help gc" for manual housekeeping',
]
lines.reject! do |line|
line.start_with?(*start_ignores) or
line =~ SUMMARY_RE or
line =~ /^ +[0-9a-f]+\.\.[0-9a-f]+ +\S+ +-> \S+$/ or # branch
line =~ /^ +\+ [0-9a-f]+\.\.\.[0-9a-f]+ +\S+ +-> \S+ +\(forced update\)$/ # branch
end
unless lines.empty?
level = 'info'
data = lines.dup
end
# Drop the individual file details
lines.reject! {|line|
# certbot-route53/certbot_route53/authenticator.py | 6 +-----
line =~ /^ \S+ +\| +\d+/ or
# {certbot-route53 => certbot-dns-route53}/.gitignore | 0
line =~ /^ \S+ => \S+ +\| +\d+/ or
# certbot/tests/testdata/{csr.der => csr_512.der} | Bin
line =~ /^ \S+ => \S+ +\| Bin/ or
# letsencrypt-auto-source/letsencrypt-auto.sig | Bin 256 -> 256 bytes
line =~ /^ \S+ +\| Bin \d+ -> \d+ bytes/
}
show 'lines', lines
if lines.empty?
if not data
title = "partial response"
level = 'warning'
seen_level[level] = true
elsif String === data
title = "No files updated"
end
data << revision if revision and data.instance_of? Array
else
level = 'danger'
data = lines.dup
title = nil
seen_level[level] = true
end
status[repository] = {level: level, data: data, href: '../logs/git-pull'}
status[repository][:title] = title if title
end
# save as the highest level seen
%w{danger warning}.each do |lvl|
if seen_level[lvl]
# Save a copy of the log; append the severity so can track more problems
file = File.basename(log)
if __FILE__ == $0 # unit test
puts "Would copy log to " + File.join(archive, file + '.' + lvl)
else
FileUtils.copy log, File.join(archive, file + '.' + lvl), preserve: true
end
break
end
end
{data: status}
end
private
def show(name,value)
# $stderr.puts "#{name}='#{value.to_s}'"
end
# for debugging purposes
if __FILE__ == $0
response = Monitor.git(nil) # must agree with method name above
data = response[:data]
data.each do |k,v|
puts "#{k} #{data[k][:level]} #{data[k][:title] or data[k][:data] }"
end
end
# test data
__END__
/x1/srv/git/infrapup
Already on 'deployment'
Your branch is behind 'origin/deployment' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
Updating 74bdd49..83e4220
Fast-forward
data/ubuntu/1404.yaml | 1 +
data/ubuntu/1604.yaml | 1 +
modules/build_slaves/manifests/jenkins.pp | 38 +++++++++++++++++++-------------------
3 files changed, 21 insertions(+), 19 deletions(-)
/x1/srv/git/infrapup2
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
Already up-to-date.
/x1/srv/git/infrapup3
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
From git://git.apache.org/infrapup
* [new branch] humbedooh/multimail-1.5 -> origin/humbedooh/multimail-1.5
Already up-to-date.
/x1/srv/git/infrapup4
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
From git://git.apache.org/infrapup
83e4220..7394a6e deployment -> origin/deployment
Updating 83e4220..7394a6e
Fast-forward
modules/gitbox/files/asfgit/git_multimail.py | 1009 +++++++++++++++++++-------
1 file changed, 737 insertions(+), 272 deletions(-)
/x1/srv/git/infrapup5
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
From git://git.apache.org/infrapup
f827a83..b649da5 deployment -> origin/deployment
Updating f827a83..b649da5
Fast-forward
.../git_mirror_asf/files/bin/graduate-podling.py | 159 +++++++++++++++++++++
1 file changed, 159 insertions(+)
create mode 100644 modules/git_mirror_asf/files/bin/graduate-podling.py
/x1/srv/git/infrapup6
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
From https://github.com/apache/infrapup
1eaab02..bafa433 deployment -> origin/deployment
Updating 1eaab02..bafa433
Fast-forward
.../files/projects/archive-snapshots-monthly.sh | 14 -----
.../files/projects/create-ofbiz-archives-index.sh | 54 ------------------
.../files/projects/create-ofbiz-snapshots-index.sh | 64 ----------------------
.../files/projects/remove-snapshots-daily.sh | 14 -----
modules/buildbot_asf/manifests/init.pp | 51 -----------------
5 files changed, 197 deletions(-)
delete mode 100755 modules/buildbot_asf/files/projects/archive-snapshots-monthly.sh
delete mode 100755 modules/buildbot_asf/files/projects/create-ofbiz-archives-index.sh
delete mode 100755 modules/buildbot_asf/files/projects/create-ofbiz-snapshots-index.sh
delete mode 100755 modules/buildbot_asf/files/projects/remove-snapshots-daily.sh
/x1/srv/git/letsencrypt
Already up-to-date.
/x1/srv/git/letsencrypt2
From https://github.com/letsencrypt/letsencrypt
d25069d..6ee934b master -> origin/master
Updating d25069d..6ee934b
Fast-forward
certbot-route53/certbot_route53/authenticator.py | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
/x1/srv/git/letsencrypt3
From https://github.com/letsencrypt/letsencrypt
0e4f559..2325438 master -> origin/master
+ 9564bce...e40eba0 fix-oldest-tests -> origin/fix-oldest-tests (forced update)
8061f7a..41098b3 ipv6 -> origin/ipv6
Updating 0e4f559..2325438
Fast-forward
certbot-route53/certbot_route53/authenticator.py | 14 +++++++++-----
certbot-route53/certbot_route53/authenticator_test.py | 18 +++++++-----------
2 files changed, 16 insertions(+), 16 deletions(-)
/x1/srv/git/letsencrypt4
From https://github.com/letsencrypt/letsencrypt
7531c98..e0f3c05 master -> origin/master
8a46a0c..a8e4143 fix-oldest-tests -> origin/fix-oldest-tests
d283103..ca4538b ipv6 -> origin/ipv6
Updating 7531c98..e0f3c05
Fast-forward
{certbot-route53 => certbot-dns-route53}/.gitignore | 0
{certbot-route53 => certbot-dns-route53}/LICENSE | 0
{certbot-route53 => certbot-dns-route53}/MANIFEST.in | 0
{certbot-route53 => certbot-dns-route53}/README.md | 2 +-
.../certbot_dns_route53}/__init__.py | 0
certbot-dns-route53/certbot_dns_route53/authenticator.py | 12 ++++++++++++
.../certbot_dns_route53/dns_route53.py | 4 ++--
.../certbot_dns_route53/dns_route53_test.py | 6 +++---
.../examples/sample-aws-policy.json | 2 +-
{certbot-route53 => certbot-dns-route53}/setup.cfg | 0
{certbot-route53 => certbot-dns-route53}/setup.py | 7 ++++---
.../tools/tester.pkoch-macos_sierra.sh | 0
certbot/cli.py | 3 +++
certbot/plugins/disco.py | 1 +
certbot/plugins/selection.py | 5 ++++-
tests/letstest/scripts/test_apache2.sh | 2 +-
tools/venv.sh | 2 +-
tools/venv3.sh | 2 +-
tox.cover.sh | 6 +++---
tox.ini | 8 ++++----
20 files changed, 41 insertions(+), 21 deletions(-)
rename {certbot-route53 => certbot-dns-route53}/.gitignore (100%)
rename {certbot-route53 => certbot-dns-route53}/LICENSE (100%)
rename {certbot-route53 => certbot-dns-route53}/MANIFEST.in (100%)
rename {certbot-route53 => certbot-dns-route53}/README.md (97%)
rename {certbot-route53/certbot_route53 => certbot-dns-route53/certbot_dns_route53}/__init__.py (100%)
create mode 100644 certbot-dns-route53/certbot_dns_route53/authenticator.py
rename certbot-route53/certbot_route53/authenticator.py => certbot-dns-route53/certbot_dns_route53/dns_route53.py (96%)
rename certbot-route53/certbot_route53/authenticator_test.py => certbot-dns-route53/certbot_dns_route53/dns_route53_test.py (97%)
rename {certbot-route53 => certbot-dns-route53}/examples/sample-aws-policy.json (91%)
rename {certbot-route53 => certbot-dns-route53}/setup.cfg (100%)
rename {certbot-route53 => certbot-dns-route53}/setup.py (88%)
rename {certbot-route53 => certbot-dns-route53}/tools/tester.pkoch-macos_sierra.sh (100%)
/x1/srv/git/letsencrypt5
From https://github.com/letsencrypt/letsencrypt
* [new branch] 0.15.x -> origin/0.15.x
* [new branch] candidate-0.15.0 -> origin/candidate-0.15.0
* [new tag] v0.15.0 -> v0.15.0
Already up-to-date.
/x1/srv/git/letsencrypt6
From https://github.com/letsencrypt/letsencrypt
a06dec3..895a525 master -> origin/master
Updating a06dec3..895a525
Fast-forward
acme/setup.py | 2 +-
certbot-apache/setup.py | 2 +-
certbot-auto | 124 ++++++------
certbot-compatibility-test/setup.py | 2 +-
certbot-dns-cloudflare/setup.py | 2 +-
certbot-dns-cloudxns/setup.py | 2 +-
certbot-dns-digitalocean/setup.py | 2 +-
certbot-dns-dnsimple/setup.py | 2 +-
certbot-dns-google/setup.py | 2 +-
certbot-dns-nsone/setup.py | 2 +-
certbot-dns-route53/setup.py | 2 +-
certbot-nginx/setup.py | 2 +-
certbot/__init__.py | 2 +-
docs/cli-help.txt | 215 ++++++++++++++++-----
letsencrypt-auto | 124 ++++++------
letsencrypt-auto-source/certbot-auto.asc | 14 +-
letsencrypt-auto-source/letsencrypt-auto | 26 +--
letsencrypt-auto-source/letsencrypt-auto.sig | Bin 256 -> 256 bytes
.../pieces/certbot-requirements.txt | 24 +--
19 files changed, 336 insertions(+), 215 deletions(-)
/x1/srv/git/letsencrypt7
From https://github.com/letsencrypt/letsencrypt
c33ee0e..8ca36a0 master -> origin/master
Updating c33ee0e..8ca36a0
Fast-forward
certbot/plugins/common_test.py | 4 +-
certbot/tests/account_test.py | 8 ++--
certbot/tests/cert_manager_test.py | 2 +-
certbot/tests/client_test.py | 14 +++---
certbot/tests/crypto_util_test.py | 49 ++++++++++-----------
certbot/tests/main_test.py | 18 ++++----
certbot/tests/storage_test.py | 15 ++++---
certbot/tests/testdata/README | 11 +++++
.../{cert-5sans.pem => cert-5sans_512.pem} | 0
.../testdata/{cert-san.pem => cert-san_512.pem} | 0
certbot/tests/testdata/cert.b64jose | 1 -
certbot/tests/testdata/cert.der | Bin 377 -> 0 bytes
.../{self_signed_cert.pem => cert_2048.pem} | 0
certbot/tests/testdata/{cert.pem => cert_512.pem} | 0
.../{self_signed_cert_bad.pem => cert_512_bad.pem} | 0
...igned_fullchain.pem => cert_fullchain_2048.pem} | 0
certbot/tests/testdata/csr-6sans.pem | 12 -----
certbot/tests/testdata/csr-6sans_512.conf | 29 ++++++++++++
certbot/tests/testdata/csr-6sans_512.pem | 12 +++++
.../{csr-nonames.pem => csr-nonames_512.pem} | 0
certbot/tests/testdata/csr-nosans.pem | 8 ----
certbot/tests/testdata/csr-nosans_512.conf | 16 +++++++
certbot/tests/testdata/csr-nosans_512.pem | 9 ++++
.../testdata/{csr-san.pem => csr-san_512.pem} | 0
certbot/tests/testdata/{csr.der => csr_512.der} | Bin
certbot/tests/testdata/{csr.pem => csr_512.pem} | 0
certbot/tests/testdata/dsa512_key.pem | 14 ------
certbot/tests/testdata/dsa_cert.pem | 17 -------
certbot/tests/testdata/matching_cert.pem | 14 ------
certbot/tests/testdata/rsa512_key_2.pem | 9 ----
30 files changed, 134 insertions(+), 128 deletions(-)
create mode 100644 certbot/tests/testdata/README
rename certbot/tests/testdata/{cert-5sans.pem => cert-5sans_512.pem} (100%)
rename certbot/tests/testdata/{cert-san.pem => cert-san_512.pem} (100%)
delete mode 100644 certbot/tests/testdata/cert.b64jose
delete mode 100644 certbot/tests/testdata/cert.der
rename certbot/tests/testdata/{self_signed_cert.pem => cert_2048.pem} (100%)
rename certbot/tests/testdata/{cert.pem => cert_512.pem} (100%)
rename certbot/tests/testdata/{self_signed_cert_bad.pem => cert_512_bad.pem} (100%)
rename certbot/tests/testdata/{self_signed_fullchain.pem => cert_fullchain_2048.pem} (100%)
delete mode 100644 certbot/tests/testdata/csr-6sans.pem
create mode 100644 certbot/tests/testdata/csr-6sans_512.conf
create mode 100644 certbot/tests/testdata/csr-6sans_512.pem
rename certbot/tests/testdata/{csr-nonames.pem => csr-nonames_512.pem} (100%)
delete mode 100644 certbot/tests/testdata/csr-nosans.pem
create mode 100644 certbot/tests/testdata/csr-nosans_512.conf
create mode 100644 certbot/tests/testdata/csr-nosans_512.pem
rename certbot/tests/testdata/{csr-san.pem => csr-san_512.pem} (100%)
rename certbot/tests/testdata/{csr.der => csr_512.der} (100%)
rename certbot/tests/testdata/{csr.pem => csr_512.pem} (100%)
delete mode 100644 certbot/tests/testdata/dsa512_key.pem
delete mode 100644 certbot/tests/testdata/dsa_cert.pem
delete mode 100644 certbot/tests/testdata/matching_cert.pem
delete mode 100644 certbot/tests/testdata/rsa512_key_2.pem
/x1/srv/git/infrapup7
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
From https://github.com/apache/infrapup
b03cfe6..21a99b2 deployment -> origin/deployment
Updating b03cfe6..21a99b2
Fast-forward
.../files/authorization/check-auth-templates.pl | 16 +-
.../files/authorization/gen_asf-authorization.pl | 291 ---------------------
.../files/authorization/pit-authorization-template | 2 +
3 files changed, 10 insertions(+), 299 deletions(-)
mode change 100644 => 100755 modules/subversion_server/files/authorization/check-auth-templates.pl
delete mode 100755 modules/subversion_server/files/authorization/gen_asf-authorization.pl
/x1/srv/git/infrapup8
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
HEAD is now at 4aafd69 Merge pull request #720 from rubys/rubys/noauth-source
/x1/srv/git/letsencrypt8
From https://github.com/letsencrypt/letsencrypt
e86bb7f..97ad9f9 plugin_storage -> origin/plugin_storage
HEAD is now at a2239ba fix test_tests.sh (#5478)
/x1/srv/git/infrapup9
Already on 'deployment'
Your branch is up-to-date with 'origin/deployment'.
From https://github.com/apache/infrapup
228c0fb..8bbfaca deployment -> origin/deployment
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
HEAD is now at 8bbfaca Merge pull request #853 from sebbASF/zcat