Commit c658cb42 authored by Aleksandr Konstantinov's avatar Aleksandr Konstantinov

Merge branch 'master' into scitokens

parents 6fdb2296 e1004833
......@@ -114,8 +114,6 @@ Depends:
${misc:Depends},
libarccommon3 (= ${binary:Version}),
lsb-base (>= 3.0-6)
Recommends:
nordugrid-arc-python (= ${binary:Version})
Description: ARC Hosting Environment Daemon
NorduGrid is a collaboration aiming at development, maintenance and
support of the middleware, known as the Advanced Resource
......@@ -209,20 +207,25 @@ Description: ARC LDAP monitor web application
system and visualizes it.
Package: nordugrid-arc-arcctl
Architecture: any
Replaces:
libarccommon3 (<< 6.5.0~),
nordugrid-arc-arex (<< 6.5.0~)
Breaks:
libarccommon3 (<< 6.5.0~),
nordugrid-arc-arex (<< 6.5.0~)
Architecture: all
Depends:
${misc:Depends},
${python:Depends},
${python3:Depends},
libarccommon3 (= ${binary:Version}),
${pydeps:Depends},
lsb-base (>= 3.0-6)
libarccommon3 (>= ${source:Version})
XB-Python-Version: ${python:Versions}
Description: ARC Resource-coupled EXecution service
NorduGrid is a collaboration aiming at development, maintenance and
support of the middleware, known as the Advanced Resource
Connector (ARC).
.
This package contains the ARC Contol Tool with basic set of control
This package contains the ARC Control Tool with basic set of control
modules suitable for both server and client side.
Package: nordugrid-arc-arex
......@@ -234,13 +237,14 @@ Replaces:
nordugrid-arc-candypond (<< 6.0.0~),
nordugrid-arc-aris (<< 6.0.0~),
nordugrid-arc-infosys-ldap (<< 6.3.0~),
nordugrid-arc-python (<< 6.4.0~)
libarccommon3 (<< 6.5.0~)
Conflicts:
nordugrid-arc-cache-service (<< 6.0.0~),
nordugrid-arc-candypond (<< 6.0.0~)
Breaks:
nordugrid-arc-aris (<< 6.0.0~),
nordugrid-arc-infosys-ldap (<< 6.3.0~)
nordugrid-arc-infosys-ldap (<< 6.3.0~),
libarccommon3 (<< 6.5.0~)
Architecture: any
Depends:
${shlibs:Depends},
......@@ -250,7 +254,7 @@ Depends:
${python3:Depends},
libarccommon3 (= ${binary:Version}),
nordugrid-arc-hed (= ${binary:Version}),
nordugrid-arc-arcctl (= ${binary:Version}),
nordugrid-arc-arcctl (= ${source:Version}),
nordugrid-arc-plugins-needed (= ${binary:Version}),
libjson-xs-perl,
libxml-simple-perl,
......@@ -294,21 +298,21 @@ Description: ARC Resource-coupled EXecution service - Python LRMS backends
supported. It is released as a technology preview.
Package: nordugrid-arc-community-rtes
Architecture: any
Architecture: all
Depends:
${misc:Depends},
${python:Depends},
${python3:Depends},
libarccommon3 (= ${binary:Version}),
nordugrid-arc-arex (= ${binary:Version}),
nordugrid-arc-arcctl (= ${binary:Version})
${pydeps:Depends},
nordugrid-arc-arex (>= ${source:Version}),
nordugrid-arc-arcctl (= ${source:Version}),
${pydeps:Depends}
XB-Python-Version: ${python:Versions}
Description: ARC Resource-coupled EXecution service - Python LRMS backends
NorduGrid is a collaboration aiming at development, maintenance and
support of the middleware, known as the Advanced Resource
Connector (ARC).
.
Community RTEs is the framework that allows to deploy software packages
Community RTEs is the framework that allows deploying software packages
(tarballs, containers, etc) provided by trusted communities to ARC CE
using simple arcctl commands.
It is released as a technology preview.
......
......@@ -4,7 +4,7 @@ Upstream-Contact: contact@nordigrd.org
Source: http://download.nordugrid.org/packages/nordugrid-arc/releases
Files: *
Copyright: 2006-2013
Copyright: 2006-2020
David Cameron <david.cameron@cern.ch>
Péter Dóbé <dobe@iit.bme.hu>
Mattias Ellert <mattias.ellert@fysast.uu.se>
......@@ -21,9 +21,11 @@ Copyright: 2006-2013
Aleksandr Konstantinov <const@takas.lt>
Balázs Kónya <balazs.konya@hep.lu.se>
Hajo Nils Krabbenhöft <hajo@h-yo.de>
Andrew Lahiff <andrew.lahiff@stfc.ac.uk>
Juha Lento <juha.lento@csc.fi>
Peter Lundgaard Rosendahl <prosen@nbi.dk>
Iván Márton <martoni@niif.hu>
Luca Mazzaferro <luca.mazzaferro@rzg.mpg.de>
Bjarte Mohn <Bjarte.Mohn@fysast.uu.se>
Steffen Möller <moeller@inb.uni-luebeck.de>
Zsombor Nagy <zsombor@niif.hu>
......@@ -44,6 +46,7 @@ Copyright: 2006-2013
Salman Zubair Toor <salman.toor@it.uu.se>
Olli Tourunen <olli.tourunen@csc.fi>
Petter Urkedal <urkedal@nbi.dk>
Wenjing Wu <wuwj@ihep.ac.cn>
Anders Wäänänen <waananen@nbi.dk>
Thomas Zangerl <tzangerl@pdc.kth.se>
.
......@@ -62,6 +65,23 @@ Copyright: 2006-2013
Taras Shevchenko National University of Kyiv (Ukraine)
License: Apache-2.0
Files: src/hed/acc/EMIES/schema/GLUE2.xsd
Copyright: 2011
Sergio Andreozzi (EGI.eu)
Balazs Konya (Lund University)
Shiraz Memon (Forschungszentrum Juelich GmbH)
Paul Millar (DESY)
Adrian Taga (Oslo University)
License: Apache-2.0
Files: src/hed/libs/data/cache-clean
Copyright: 2008 Niklas Edmundsson, Tomas Ögren, David Cameron
License: Apache-2.0
Files: src/services/a-rex/infoproviders/glite-info-provider-ldap
Copyright: Members of the EGEE Collaboration 2004
License: Apache-2.0
Files: src/services/a-rex/jura/ssm/*
Copyright: 2012 STFC
License: Apache-2.0
......
......@@ -179,6 +179,8 @@ override_dh_python2:
echo "pydeps:Depends=python-ldap, python-isodate, python-stompy" \
>> debian/nordugrid-arc-arex.substvars
echo "pydeps:Depends=python-dns" \
>> debian/nordugrid-arc-community-rtes.substvars
echo "pydeps:Depends=python-twisted, python-openssl" \
>> debian/nordugrid-arc-acix-core.substvars
echo "pydeps:Depends=python-ldap, python-dns" \
......@@ -189,6 +191,8 @@ override_dh_python3:
echo "pydeps:Depends=python3-ldap, python3-isodate" \
>> debian/nordugrid-arc-arex.substvars
echo "pydeps:Depends=python3-dns" \
>> debian/nordugrid-arc-community-rtes.substvars
echo "pydeps:Depends=python3-twisted, python3-openssl" \
>> debian/nordugrid-arc-acix-core.substvars
echo "pydeps:Depends=python3-ldap, python3-dns" \
......
This diff is collapsed.
......@@ -35,3 +35,4 @@ bashcompletion_DATA = arc-client-tools
EXTRA_DIST = $(example_DATA) $(arcsysconf_DATA) $(BASH_COMPLETION_SOURCE)
CLEANFILES = arc-client-tools
......@@ -672,30 +672,38 @@ static int runmain(int argc, char *argv[]) {
std::cout << "VO : "<<voms_attributes[n].voname << std::endl;
std::cout << "subject : "<<voms_attributes[n].holder << std::endl;
std::cout << "issuer : "<<voms_attributes[n].issuer << std::endl;
bool found_uri = false;
for(int i = 0; i < voms_attributes[n].attributes.size(); i++) {
std::string attr = voms_attributes[n].attributes[i];
std::string::size_type pos;
if((pos = attr.find("hostname=")) != std::string::npos) {
if(found_uri) continue;
std::string str = attr.substr(pos+9);
std::string::size_type pos1 = str.find("/");
if(pos1 != std::string::npos) str = str.substr(0, pos1);
std::cout << "uri : " << str <<std::endl;
found_uri = true;
std::list<std::string> attr_elements;
Arc::tokenize(attr, attr_elements, "/");
// remove /voname= prefix
if ( ! attr_elements.empty() ) attr_elements.pop_front();
if ( attr_elements.empty() ) {
logger.msg(Arc::WARNING, "Malformed VOMS AC attribute %s", attr);
continue;
}
// policyAuthority (URI) and AC tags
if ( attr_elements.size() == 1 ) {
std::string uri = attr_elements.front().substr(9);
std::cout << "uri : " << uri <<std::endl;
} else {
std::string fqan = "";
attr_elements.pop_front();
// tags rendering is not defined in GFD.182
// tags are assigned to members, groups and roles
// FQAN-based ARC rendering is used
while (! attr_elements.empty () ) {
fqan.append("/").append(attr_elements.front());
attr_elements.pop_front();
}
std::cout << "tag : " << fqan <<std::endl;
}
}
else {
if(attr.find("Role=") == std::string::npos)
std::cout << "attribute : " << attr <<"/Role=NULL/Capability=NULL" <<std::endl;
else if(attr.find("Capability=") == std::string::npos)
std::cout << "attribute : " << attr <<"/Capability=NULL" <<std::endl;
else
std::cout << "attribute : " << attr <<std::endl;
}
if((pos = attr.find("Role=")) != std::string::npos) {
std::string str = attr.substr(pos+5);
std::cout << "attribute : role = " << str << " (" << voms_attributes[n].voname << ")"<<std::endl;
// Short FQANs are GFD.182 compliant, no need to add Role=NULL
std::cout << "attribute : " << attr <<std::endl;
}
//std::cout << "attribute : "<<voms_attributes[n].attributes[i]<<std::endl;
......
......@@ -1528,12 +1528,12 @@ err:
status |= VOMSACInfo::InternalParsingFailed;
return false;
}
//Check AC's extension
if(!checkExtensions(ac->acinfo->exts, issuer, output, status)) res = false;
//Check AC's attribute
if(!checkAttributes(ac->acinfo->attrib, output, status)) res = false; // ??
//Check AC's extension
if(!checkExtensions(ac->acinfo->exts, issuer, output, status)) res = false;
return res;
}
......
......@@ -212,15 +212,41 @@ int main(int argc, char *argv[]) {
std::size_t pos;
if(voms_attributes.size() > 0) {
for (std::vector<Arc::VOMSACInfo>::iterator iAC = voms_attributes.begin(); iAC != voms_attributes.end(); iAC++) {
for (int acnt = 1; acnt < iAC->attributes.size(); acnt++ ) {
for (unsigned int acnt = 0; acnt < iAC->attributes.size(); acnt++ ) {
fqan = iAC->attributes[acnt];
pos = fqan.find("/Role=");
if ( pos == std::string::npos ) fqan = fqan + "/Role=NULL";
logger.msg(Arc::DEBUG, "Found VOMS AC attribute: %s", fqan);
std::list<std::string> elements;
Arc::tokenize(fqan, elements, "/");
if ( elements.size() == 0 ) {
logger.msg(Arc::DEBUG, "Malformed VOMS AC attribute %s", fqan);
continue;
}
if (elements.front().rfind("voname=", 0) == 0) {
elements.pop_front(); // crop voname=
if ( ! elements.empty() ) elements.pop_front(); // crop hostname=
if ( ! elements.empty() ) {
logger.msg(Arc::DEBUG, "VOMS AC attribute is a tag");
fqan = "";
while (! elements.empty () ) {
fqan.append("/").append(elements.front());
elements.pop_front();
}
} else {
logger.msg(Arc::DEBUG, "Skipping policyAuthority VOMS AC attribute");
continue;
}
} else {
logger.msg(Arc::DEBUG, "VOMS AC attribute is the FQAN");
pos = fqan.find("/Role=");
if ( pos == std::string::npos ) fqan = fqan + "/Role=NULL";
}
fqans_logentry += "\"userFQAN=" + Arc::trim(Arc::escape_chars(fqan, "\"\\", '\\', false)) + "\" ";
}
}
} else {
logger.msg(Arc::DEBUG, "No FQAN found. Using NULL as userFQAN value");
logger.msg(Arc::DEBUG, "No FQAN found. Using None as userFQAN value");
fqans_logentry = "\"userFQAN=/None/Role=NULL\" ";
}
......
......@@ -110,7 +110,7 @@ process_log_file () {
exited_killed_jobs=`egrep '^[^;]*;0010;[^;]*;Job;|^[^;]*;0008;[^;]*;Job;[^;]*;Exit_status=|^[^;]*;0008;[^;]*;Job;[^;]*;Job deleted' ${lname} | tail -n+$(( $lines_skip + 1 ))`
#TODO should we add processed lines before jobs have actually been processed? What if the last job only has half a record?
new_lines=`echo "$exited_killed_jobs" | wc -l`
new_lines=`echo -n "$exited_killed_jobs" | wc -l`
# new_lines set to 1 when string is empty, should have been 0
[ "x$exited_killed_jobs" = x ] && continue
......@@ -314,8 +314,8 @@ if [ "$readable_logs" = 'yes' ] ; then
process_log_file
fi
sleep 10
time_count=$(( $time_count + 1 ))
if [ "$time_count" -gt 60 ] ; then break ; fi
time_count=$(( $time_count + 10 ))
if [ "$time_count" -ge 60 ] ; then break ; fi
done
exit 0
fi
......
......@@ -110,7 +110,7 @@ process_log_file () {
exited_killed_jobs=`egrep '^[^;]*;0010;[^;]*;Job;|^[^;]*;0008;[^;]*;Job;[^;]*;Exit_status=|^[^;]*;0008;[^;]*;Job;[^;]*;Job deleted' ${lname} | tail -n+$(( $lines_skip + 1 ))`
#TODO should we add processed lines before jobs have actually been processed? What if the last job only has half a record?
new_lines=`echo "$exited_killed_jobs" | wc -l`
new_lines=`echo -n "$exited_killed_jobs" | wc -l`
# new_lines set to 1 when string is empty, should have been 0
[ "x$exited_killed_jobs" = x ] && continue
......@@ -314,8 +314,8 @@ if [ "$readable_logs" = 'yes' ] ; then
process_log_file
fi
sleep 10
time_count=$(( $time_count + 1 ))
if [ "$time_count" -gt 60 ] ; then break ; fi
time_count=$(( $time_count + 10 ))
if [ "$time_count" -ge 60 ] ; then break ; fi
done
exit 0
fi
......
......@@ -629,6 +629,7 @@ $message = array (
"BE" => "Belgium",
"BG" => "Bulgaria",
"CA" => "Canada",
"CL" => "Chile",
"CN" => "China",
"CZ" => "Czechia",
"DK" => "Denmark",
......
......@@ -617,6 +617,7 @@ $message = array (
"Belgium" => "Бельгия",
"Bulgaria" => "Болгария",
"Canada" => "Канада",
"Chile" => "Чили",
"China" => "Китай",
"Czechia" => "Чехия",
"Denmark" => "Дания",
......
......@@ -22,6 +22,7 @@ except ImportError:
import ssl
import xml.etree.ElementTree as ElementTree
# DNS processing
import dns.rdatatype
import dns.resolver
import dns.update
import dns.query
......@@ -1912,12 +1913,12 @@ def archery_ddns_update(domain, nameserver, keyring_dict, new_archery_object, tt
logger.debug('Going to REMOVE raw DNS record by means of DDNS update: %s %s %s',
rr['name'], rr['type'], cr)
needs_rawupdate = True
rawupdate.delete(rr['name'], rr['type'], cr)
rawupdate.delete(rr['name'], dns.rdatatype.from_text(rr['type']), cr)
for cr in list(rr['config_data'] - rr['server_data']):
logger.debug('Going to ADD raw DNS record by means of DDNS update: %s %s %s',
rr['name'], rr['type'], cr)
needs_rawupdate = True
rawupdate.add(rr['name'], ttl, rr['type'], cr)
rawupdate.add(rr['name'], ttl, dns.rdatatype.from_text(rr['type']), cr)
if needs_rawupdate:
dns.query.tcp(rawupdate, nameserver)
......
......@@ -99,7 +99,9 @@ def get_parsed_arcconf(conf_f):
return None
if runconf_load:
if arcctl_runtime_config is not None:
if arcctl_runtime_config is None:
runconf_load = False
else:
runconf_load = os.path.exists(arcctl_runtime_config)
else:
logger.debug('Custom ARC configuration file location is specified. Ignoring cached runtime configuration usage.')
......@@ -125,9 +127,9 @@ def get_parsed_arcconf(conf_f):
arcconfig.conf_f = conf_f
except IOError:
if arcctl_ce_mode():
logger.debug('arcctl is working in config-less mode relying on defaults only')
else:
logger.error('Failed to open ARC configuration file %s', conf_f)
else:
logger.debug('arcctl is working in config-less mode relying on defaults only')
arcconfig = None
return arcconfig
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment