Skip to content

Commit 8e1502a

Browse files
authored
Merge pull request #23 from HSF/prodanaly
Changes for grand unification
2 parents 6556770 + a6a9759 commit 8e1502a

23 files changed

+908
-667
lines changed

__init__.py

Whitespace-only changes.
File renamed without changes.

examples/k8s/k8s_cvmfs_1.15.yaml

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
apiVersion: storage.k8s.io/v1
2+
kind: StorageClass
3+
metadata:
4+
name: csi-cvmfs-atlas
5+
provisioner: cvmfs.csi.cern.ch
6+
parameters:
7+
repository: atlas.cern.ch
8+
---
9+
apiVersion: storage.k8s.io/v1
10+
kind: StorageClass
11+
metadata:
12+
name: csi-cvmfs-sft
13+
provisioner: cvmfs.csi.cern.ch
14+
parameters:
15+
repository: sft.cern.ch
16+
---
17+
apiVersion: storage.k8s.io/v1
18+
kind: StorageClass
19+
metadata:
20+
name: csi-cvmfs-grid
21+
provisioner: cvmfs.csi.cern.ch
22+
parameters:
23+
repository: grid.cern.ch
24+
---
25+
apiVersion: storage.k8s.io/v1
26+
kind: StorageClass
27+
metadata:
28+
name: csi-cvmfs-atlas-condb
29+
provisioner: cvmfs.csi.cern.ch
30+
parameters:
31+
repository: atlas-condb.cern.ch
32+
---
33+
apiVersion: storage.k8s.io/v1
34+
kind: StorageClass
35+
metadata:
36+
name: csi-cvmfs-atlas-nightlies
37+
provisioner: cvmfs.csi.cern.ch
38+
parameters:
39+
repository: atlas-nightlies.cern.ch
40+
---
41+
---
42+
apiVersion: v1
43+
kind: PersistentVolumeClaim
44+
metadata:
45+
name: csi-cvmfs-atlas-pvc
46+
spec:
47+
accessModes:
48+
- ReadOnlyMany
49+
resources:
50+
requests:
51+
storage: 1Gi
52+
storageClassName: csi-cvmfs-atlas
53+
---
54+
apiVersion: v1
55+
kind: PersistentVolumeClaim
56+
metadata:
57+
name: csi-cvmfs-sft-pvc
58+
spec:
59+
accessModes:
60+
- ReadOnlyMany
61+
resources:
62+
requests:
63+
storage: 1Gi
64+
storageClassName: csi-cvmfs-sft
65+
---
66+
apiVersion: v1
67+
kind: PersistentVolumeClaim
68+
metadata:
69+
name: csi-cvmfs-grid-pvc
70+
spec:
71+
accessModes:
72+
- ReadOnlyMany
73+
resources:
74+
requests:
75+
storage: 1Gi
76+
storageClassName: csi-cvmfs-grid
77+
78+
---
79+
apiVersion: v1
80+
kind: PersistentVolumeClaim
81+
metadata:
82+
name: csi-cvmfs-atlas-condb-pvc
83+
spec:
84+
accessModes:
85+
- ReadOnlyMany
86+
resources:
87+
requests:
88+
storage: 1Gi
89+
storageClassName: csi-cvmfs-atlas-condb
90+
---
91+
apiVersion: v1
92+
kind: PersistentVolumeClaim
93+
metadata:
94+
name: csi-cvmfs-atlas-nightlies-pvc
95+
spec:
96+
accessModes:
97+
- ReadOnlyMany
98+
resources:
99+
requests:
100+
storage: 1Gi
101+
storageClassName: csi-cvmfs-atlas-nightlies

pandaharvester/harvesterbody/submitter.py

+353-348
Large diffs are not rendered by default.

pandaharvester/harvesterbody/worker_adjuster.py

+189-174
Large diffs are not rendered by default.

pandaharvester/harvesterbody/worker_maker.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ def get_plugin(self, queue_config):
1818
return self.pluginFactory.get_plugin(queue_config.workerMaker)
1919

2020
# make workers
21-
def make_workers(self, jobchunk_list, queue_config, n_ready, resource_type, maker=None):
22-
tmpLog = core_utils.make_logger(_logger, 'queue={0} rtype={1}'.format(queue_config.queueName, resource_type),
21+
def make_workers(self, jobchunk_list, queue_config, n_ready, job_type, resource_type, maker=None):
22+
tmpLog = core_utils.make_logger(_logger, 'queue={0} jtype={1} rtype={2}'.format(queue_config.queueName, job_type, resource_type),
2323
method_name='make_workers')
2424
tmpLog.debug('start')
2525
try:
@@ -38,7 +38,7 @@ def make_workers(self, jobchunk_list, queue_config, n_ready, resource_type, make
3838
for iChunk, jobChunk in enumerate(jobchunk_list):
3939
# make a worker
4040
if iChunk >= n_ready:
41-
workSpec = maker.make_worker(jobChunk, queue_config, resource_type)
41+
workSpec = maker.make_worker(jobChunk, queue_config, job_type, resource_type)
4242
else:
4343
# use ready worker
4444
if iChunk < len(readyWorkers):
@@ -65,35 +65,35 @@ def make_workers(self, jobchunk_list, queue_config, n_ready, resource_type, make
6565
return [], jobchunk_list
6666

6767
# get number of jobs per worker
68-
def get_num_jobs_per_worker(self, queue_config, n_workers, resource_type, maker=None):
68+
def get_num_jobs_per_worker(self, queue_config, n_workers, job_type, resource_type, maker=None):
6969
# get plugin
7070
if maker is None:
7171
maker = self.pluginFactory.get_plugin(queue_config.workerMaker)
7272
return maker.get_num_jobs_per_worker(n_workers)
7373

7474
# get number of workers per job
75-
def get_num_workers_per_job(self, queue_config, n_workers, resource_type, maker=None):
75+
def get_num_workers_per_job(self, queue_config, n_workers, job_type, resource_type, maker=None):
7676
# get plugin
7777
if maker is None:
7878
maker = self.pluginFactory.get_plugin(queue_config.workerMaker)
7979
return maker.get_num_workers_per_job(n_workers)
8080

8181
# check number of ready resources
82-
def num_ready_resources(self, queue_config, resource_type, maker=None):
82+
def num_ready_resources(self, queue_config, job_type, resource_type, maker=None):
8383
# get plugin
8484
if maker is None:
8585
maker = self.pluginFactory.get_plugin(queue_config.workerMaker)
8686
return maker.num_ready_resources()
8787

8888
# get upper limit on the cumulative total of workers per job
89-
def get_max_workers_per_job_in_total(self, queue_config, resource_type, maker=None):
89+
def get_max_workers_per_job_in_total(self, queue_config, job_type, resource_type, maker=None):
9090
# get plugin
9191
if maker is None:
9292
maker = self.pluginFactory.get_plugin(queue_config.workerMaker)
9393
return maker.get_max_workers_per_job_in_total()
9494

9595
# get upper limit on the number of new workers per job in a cycle
96-
def get_max_workers_per_job_per_cycle(self, queue_config, resource_type, maker=None):
96+
def get_max_workers_per_job_per_cycle(self, queue_config, job_type, resource_type, maker=None):
9797
# get plugin
9898
if maker is None:
9999
maker = self.pluginFactory.get_plugin(queue_config.workerMaker)

pandaharvester/harvestercommunicator/panda_communicator.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ def update_worker_stats(self, site_name, stats):
530530
data['siteName'] = site_name
531531
data['paramsList'] = json.dumps(stats)
532532
tmpLog.debug('update stats for {0}, stats: {1}'.format(site_name, stats))
533-
tmpStat, tmpRes = self.post_ssl('reportWorkerStats', data)
533+
tmpStat, tmpRes = self.post_ssl('reportWorkerStats_jobtype', data)
534534
errStr = 'OK'
535535
if tmpStat is False:
536536
errStr = core_utils.dump_error_message(tmpLog, tmpRes)

pandaharvester/harvestercore/command_spec.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class CommandSpec(SpecBase):
1616
)
1717
# commands
1818
COM_reportWorkerStats = 'REPORT_WORKER_STATS'
19-
COM_setNWorkers = 'SET_N_WORKERS'
19+
COM_setNWorkers = 'SET_N_WORKERS_JOBTYPE'
2020
COM_killWorkers = 'KILL_WORKERS'
2121
# mapping between command and receiver
2222
receiver_map = {

pandaharvester/harvestercore/core_utils.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -592,8 +592,8 @@ def get_queues_config_url():
592592

593593

594594
# get unique queue name
595-
def get_unique_queue_name(queue_name, resource_type):
596-
return '{0}:{1}'.format(queue_name, resource_type)
595+
def get_unique_queue_name(queue_name, resource_type, job_type):
596+
return '{0}:{1}:{2}'.format(queue_name, resource_type, job_type)
597597

598598

599599
# capability to dynamically change plugins
@@ -613,19 +613,19 @@ def _asdict(self):
613613
return dict(zip(self.attributes, self))
614614

615615

616-
# Make a list of choice candidates accroding to permille weight
616+
# Make a list of choice candidates according to permille weight
617617
def make_choice_list(pdpm={}, default=None):
618618
weight_sum = sum(pdpm.values())
619-
weight_defualt = 1000
619+
weight_default = 1000
620620
ret_list = []
621621
for candidate, weight in iteritems(pdpm):
622622
if weight_sum > 1000:
623623
real_weight = int(weight * 1000 / weight_sum)
624624
else:
625625
real_weight = int(weight)
626626
ret_list.extend([candidate]*real_weight)
627-
weight_defualt -= real_weight
628-
ret_list.extend([default]*weight_defualt)
627+
weight_default -= real_weight
628+
ret_list.extend([default]*weight_default)
629629
return ret_list
630630

631631

0 commit comments

Comments
 (0)