Skip to content

Commit 12d500d

Browse files
committed
Merge branch 'release/2.3'
2 parents 51c14b9 + a916a81 commit 12d500d

File tree

41 files changed

+962
-138
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+962
-138
lines changed

manage/fabfile/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
env.toolsdir = sep.join((env.projectroot, 'tools'))
2121

22+
env.resources = sep.join((env.projectroot, 'resources'))
23+
2224
env.builddir = sep.join((env.projectroot, '_build'))
2325

2426
env.docbuild = sep.join((env.builddir, 'documentation'))
@@ -54,6 +56,7 @@
5456
'test': [],
5557
'regression': [],
5658
'skrapat': [],
59+
'collectreg': [],
5760
}
5861

5962
##
@@ -69,4 +72,5 @@
6972
import app.checker
7073
import app.docs
7174
import app.tools
72-
import app.demodata
75+
import app.demodata
76+
import app.tasks

manage/fabfile/app/admin.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from fabric.api import *
44
from fabric.contrib.files import exists
55
from fabric.contrib.project import rsync_project
6-
from fabfile.util import slashed, cygpath, exit_on_error
6+
from fabfile.util import slashed, cygpath, exit_on_error, role_is_active
77
from fabfile.target import _needs_targetenv
88
from fabfile.util import venv, fullpath
99
from fabfile.server import restart_apache
@@ -63,6 +63,15 @@ def all(source=None):
6363
deploy()
6464

6565

66+
@task
67+
@roles('admin')
68+
def serve_local_folder(source=None, port="8280"):
69+
"""Package and serve the admin feed at selected port on localhost."""
70+
package(source=source)
71+
with lcd("%(toolsdir)s/rinfomain" % env):
72+
local("groovy serve_folder.groovy %s/_build/%s/rinfo-admin %s" % (env.projectroot, env.target, port) )
73+
74+
6675
@task
6776
@roles('admin')
6877
def test():
@@ -99,6 +108,8 @@ def ping_main():
99108
@task
100109
@roles('admin')
101110
def test_all():
111+
if not role_is_active('admin'):
112+
return
102113
all()
103114
restart_apache()
104115
restart_tomcat()

manage/fabfile/app/checker.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import sys
22
from fabric.api import *
33
from fabric.contrib.files import exists
4-
from fabfile.util import venv, exit_on_error
4+
from fabfile.util import venv, exit_on_error, role_is_active
55
from fabfile.app import local_lib_rinfo_pkg, _deploy_war_norestart
66
from fabfile.target import _needs_targetenv
77
from fabfile.server import restart_apache
@@ -76,7 +76,9 @@ def clean():
7676
@task
7777
@roles('admin')
7878
def test_all():
79-
all(deps="0", test="0")
79+
if not role_is_active('service'):
80+
return
81+
all(deps="1", test="0")
8082
restart_tomcat()
8183
restart_apache()
8284
msg_sleep(20, "restart and tomcat apache")

manage/fabfile/app/main.py

Lines changed: 85 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import sys
22
from fabric.api import *
33
from fabric.contrib.files import exists
4-
from fabfile.util import venv, exit_on_error
4+
from fabfile.util import venv, exit_on_error, role_is_active
55
from fabfile.app import local_lib_rinfo_pkg
66
from fabfile.app import _deploy_war_norestart
77
from fabfile.target import _needs_targetenv
@@ -49,6 +49,7 @@ def setup():
4949
sudo("mkdir %(target_config_dir)s" % env)
5050
put("%(java_packages)s/rinfo-main/src/environments/%(target)s/rinfo-main.properties" % env,"%(target_config_dir)srinfo-main.properties" % env, use_sudo=True)
5151

52+
5253
@task
5354
@roles('main')
5455
@exit_on_error
@@ -94,28 +95,102 @@ def test():
9495
print "Created report '%s'" % file_name
9596

9697

98+
@task
99+
@roles('main')
100+
def count_rdfs_in_publ_in_depot(type=""):
101+
with cd("%s/depot/publ/%s" % (env.rinfo_main_store, type)):
102+
return run("find | grep .rdf | wc -l")
103+
104+
105+
@task
106+
@roles('main')
107+
def get_rdf_list_in_depot(type=""):
108+
_needs_targetenv()
109+
file_name = 'rdf_list_%s.txt' % env.target
110+
remote_file_and_path = '/tmp/%s' % file_name
111+
with cd("%s/depot/publ/%s" % (env.rinfo_main_store, type)):
112+
run("find | grep .rdf > %s" % remote_file_and_path)
113+
get(remote_file_and_path, '/tmp/%s' % file_name)
114+
local('sort /tmp/%s > /tmp/sorted_%s' % (file_name, file_name))
115+
116+
117+
@task
118+
@roles('main')
119+
def verify_depot_minimum_size():
120+
EXPECTED_SFS_DOCUMENT_COUNT = 58268
121+
EXPECTED_VA_DOCUMENT_COUNT = 24841
122+
sfs_document_count = int(count_rdfs_in_publ_in_depot('sfs'))
123+
if sfs_document_count < EXPECTED_SFS_DOCUMENT_COUNT:
124+
raise Exception("SFS Document count verification failed! Expected %s documents, but found %s! Aborting..." %
125+
(EXPECTED_SFS_DOCUMENT_COUNT,sfs_document_count))
126+
va_document_count = int(count_rdfs_in_publ_in_depot('dom')) + int(count_rdfs_in_publ_in_depot('rf'))
127+
if va_document_count < EXPECTED_VA_DOCUMENT_COUNT:
128+
raise Exception("VA Document count verification failed! Expected %s documents, but found %s! Aborting..." %
129+
(EXPECTED_VA_DOCUMENT_COUNT,va_document_count))
130+
print "Found %s SFS documents" % sfs_document_count
131+
print "Found %s VA documents" % va_document_count
132+
133+
97134
@task
98135
@roles('main')
99136
def ping_start_collect_admin():
100137
_needs_targetenv()
101138
feed_url = ''
102139
if env.target=='regression':
103140
feed_url = "http://%s/feed/current.atom" % env.roledefs['demosource'][0]
141+
elif env.target=='dev_unix':
142+
feed_url = "http://%s:8280/feed/current.atom" % env.roledefs['admin'][0]
104143
else:
105144
feed_url = "http://%s/feed/current" % env.roledefs['admin'][0]
106-
collector_url = "http://%s/collector" % env.roledefs['main'][0]
145+
main_host_and_port = env.roledefs['main'][0] if env.target!='dev_unix' else "%s:8180" % env.roledefs['main'][0]
146+
collector_url = "http://%s/collector" % main_host_and_port
107147
if not verify_url_content(" --data 'feed=%(feed_url)s' %(collector_url)s" % vars(), "Scheduled collect of"):
108148
raise Exception("Test failed")
109149

110150

111151
@task
112152
@roles('main')
113-
def ping_start_collect_feed():
153+
def ping_start_collect_feed(default_feed=None):
114154
_needs_targetenv()
115-
feed_url = "http://%s/feed/current.atom" % env.roledefs['demosource'][0]
116-
collector_url = "http://%s/collector" % env.roledefs['main'][0]
117-
if not verify_url_content(" --data 'feed=%(feed_url)s' %(collector_url)s" % vars(), "Scheduled collect of"):
118-
raise Exception("Test failed")
155+
if default_feed:
156+
if not verify_url_content(" --data 'feed=%(default_feed)s' %(collector_url)s" % vars(),
157+
"Scheduled collect of",
158+
alternate_string_exists_in_content="is already scheduled for collect"):
159+
print "Failed to start collect of '%s'" % default_feed
160+
return
161+
main_host_and_port = env.roledefs['main'][0] if env.target!='dev_unix' else "%s:8180" % env.roledefs['main'][0]
162+
collector_url = "http://%s/collector" % main_host_and_port
163+
if env.target=='regression':
164+
feed_url = "http://%s/feed/current.atom" % env.roledefs['demosource'][0]
165+
if not verify_url_content(" --data 'feed=%(feed_url)s' %(collector_url)s" % vars(), "Scheduled collect of"):
166+
raise Exception("Scheduled collect failed")
167+
else:
168+
filename = "%(resources)s/%(target)s/datasources.n3" % venv()
169+
read_file = open(filename, 'r')
170+
for line in read_file:
171+
line = line.strip()
172+
if line.startswith('iana:current'):
173+
start_index = line.index('<') + 1
174+
end_index = line.index('>')
175+
feed_url = line[start_index:end_index].strip()
176+
if feed_url=='http://rinfo.lagrummet.se/feed/current':
177+
continue
178+
if not verify_url_content(" --data 'feed=%(feed_url)s' %(collector_url)s" % vars(),
179+
"Scheduled collect of",
180+
alternate_string_exists_in_content="is already scheduled for collect"):
181+
print "Failed to start collect of '%s'" % feed_url
182+
183+
184+
@task
185+
@roles('main')
186+
def destroy_main_data(start_top_tomcat=True):
187+
if not role_is_active('main'):
188+
return
189+
if start_top_tomcat:
190+
tomcat_stop()
191+
sudo("rm -rf %(rinfo_main_store)s/*" % venv())
192+
if start_top_tomcat:
193+
tomcat_start()
119194

120195

121196
@task
@@ -148,7 +223,9 @@ def install_regression_data(restart_tomcat=True):
148223
@task
149224
@roles('main')
150225
def test_all():
151-
all(deps="0", test="0")
226+
if not role_is_active('service'):
227+
return
228+
all(deps="1", test="0")
152229
restart_apache()
153230
#if env.target=='regression':
154231
# install_regression_data()

manage/fabfile/app/service.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import sys
33
from fabric.api import *
44
from fabric.contrib.files import exists
5-
from fabfile.util import venv, mkdirpath, exit_on_error
5+
from fabfile.util import venv, mkdirpath, exit_on_error, role_is_active
66
from fabfile import app, sysconf
77
from fabfile.target import _needs_targetenv
88
from fabfile.app import _deploy_war_norestart
@@ -92,6 +92,13 @@ def deploy_sesame():
9292
app._deploy_war("%(local_sesame_dir)s/%(warname)s.war" % venv(), warname)
9393

9494

95+
@task
96+
@roles('service')
97+
def destroy_service_repository(default_repository='rinfo'):
98+
_needs_targetenv()
99+
run("curl -X POST http://localhost:8080/sesame-workbench/repositories/%s/clear" % default_repository)
100+
101+
95102
def _patch_catalina_properties():
96103
# This will patch catalina.properties so that it contains the system
97104
# property that controls where sesame stores its data
@@ -197,6 +204,13 @@ def start_elasticsearch():
197204
sudo("/etc/init.d/elasticsearch start")
198205

199206

207+
@task
208+
@roles('service')
209+
def delete_elasticsearch_index(index_name='rinfo'):
210+
_needs_targetenv()
211+
run("curl -XDELETE 'http://localhost:9200/%s/'" % index_name)
212+
213+
200214
##
201215
# Varnish install and setup
202216

@@ -265,6 +279,16 @@ def ping_start_collect():
265279
raise Exception("Test failed")
266280

267281

282+
@task
283+
@roles('service')
284+
def destroy_service_data():
285+
if not role_is_active('service'):
286+
return
287+
destroy_service_repository()
288+
delete_elasticsearch_index()
289+
ban_varnish()
290+
291+
268292
@task
269293
@roles('service')
270294
def clean():
@@ -281,7 +305,9 @@ def clean():
281305
@task
282306
@roles('service')
283307
def test_all():
284-
all(deps="0", test="0")
308+
if not role_is_active('service'):
309+
return
310+
all(deps="1", test="0")
285311
restart_apache()
286312
restart_tomcat()
287313
msg_sleep(20, "restart apache, tomcat and wait for service to start")

manage/fabfile/app/tasks.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"""
2+
Specific tasks spanning over multiple apps
3+
"""
4+
from fabric.api import *
5+
from fabfile.app.main import destroy_main_data
6+
from fabfile.app.service import destroy_service_data
7+
from fabfile.server import tomcat_stop, tomcat_start
8+
9+
10+
@task
11+
@roles('main','service')
12+
def destroy_all_data(start_top_tomcat=True):
13+
destroy_main_data(start_top_tomcat=False)
14+
if start_top_tomcat:
15+
tomcat_stop()
16+
destroy_main_data(start_top_tomcat=False)
17+
destroy_service_data(start_top_tomcat=False)
18+
if start_top_tomcat:
19+
tomcat_start()

manage/fabfile/app/tools.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ def ping_service_collector():
2121
#require('roledefs', provided_by=target)
2222
collector_url = "http://%s/collector" % env.roledefs['service'][0]
2323
feed_url = "http://%s/feed/current" % env.roledefs['main'][0]
24-
ping_collector(collector_url, feed_url)
24+
ping_collector(collector_url, feed_url)
25+
26+

manage/fabfile/server.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,16 +200,33 @@ def ftp_fetch(filename, ftp_address, target_path, username, password, test=False
200200

201201

202202

203-
def tar_and_ftp_push(snapshot_name, name, password, source_tar_path, target_path, username, test=False):
203+
def tar_and_ftp_push(snapshot_name, name, password, source_tar_path, target_path, username, test=False, md5sum=True):
204204
file_to_upload = '%s/%s.tar.gz' % (target_path, name)
205205
tar(file_to_upload, source_tar_path, test=test)
206206
ftp_push(file_to_upload, '%s/%s/%s.tar.gz' % (env.ftp_server_url, snapshot_name, name), username, password,
207207
test=test)
208+
if md5sum:
209+
md5_file = '%s/%s.md5' % (target_path, name)
210+
run("md5sum %s > %s" % (file_to_upload, md5_file) )
211+
ftp_push(md5_file, '%s/%s/%s.md5' % (env.ftp_server_url, snapshot_name, name), username, password,
212+
test=test)
208213

209214

210-
def ftp_fetch_and_untar(snapshot_name, name, tmp_path, target_tar_unpack_path, username, password, test=False, is_local=False):
215+
216+
def ftp_fetch_and_untar(snapshot_name, name, tmp_path, target_tar_unpack_path, username, password, test=False, is_local=False, md5sum=True):
211217
file_to_download = '%s.tar.gz' % name
212218
ftp_fetch(file_to_download, "%s/%s" % (env.ftp_server_url, snapshot_name), tmp_path, username, password, test=test, is_local=is_local)
219+
if md5sum:
220+
md5_file = '%s.md5' % name
221+
ignore = False
222+
try:
223+
ftp_fetch(md5_file, "%s/%s" % (env.ftp_server_url, snapshot_name), tmp_path, username, password, test=test, is_local=is_local)
224+
except: # no md5 file -> ignore
225+
ignore = True
226+
if not ignore:
227+
with cd(tmp_path):
228+
run('md5sum -c %s' % md5_file)
229+
213230
clean_path(target_tar_unpack_path, use_sudo=True, test=test, is_local=is_local)
214231
untar('%s/%s.tar.gz' % (tmp_path, name), target_tar_unpack_path, use_sudo=True, test=test, is_local=is_local)
215232

@@ -427,9 +444,11 @@ def prepare_sudo_for_debian_and_add_rinfo_user():
427444

428445

429446
@task
430-
@roles('main', 'service', 'checker', 'admin', 'lagrummet', 'emfs', 'test', 'regression', 'skrapat', 'demosource')
431-
def bootstrap():
447+
@roles('main', 'service', 'checker', 'admin', 'lagrummet', 'emfs', 'test', 'regression', 'skrapat', 'demosource', 'collectreg')
448+
def bootstrap(role=None):
432449
_needs_targetenv()
450+
if role and not role_is_active(role):
451+
return
433452
#if not os_version() == 'Debian7':
434453
# print 'Unsupported os version %%' % os_version()
435454
# return

0 commit comments

Comments
 (0)