View | Details | Raw Unified | Return to bug 45068 | Differences between
and this patch

Collapse All | Expand All

(-)a/services/univention-s4-connector/modules/univention/s4connector/s4/dns.py (-43 / +15 lines)
 Lines 984-991   def ucs_host_record_create(s4connector, object): Link Here 
984
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
984
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
985
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
985
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
986
	if len(searchResult) > 0:
986
	if len(searchResult) > 0:
987
		superordinate = s4connector_get_superordinate('dns/host_record', s4connector.lo, searchResult[0][0])
987
		newRecord = univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
988
		newRecord = univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
989
		newRecord.open()
988
		newRecord.open()
990
		if set(newRecord['a']) != set(a):
989
		if set(newRecord['a']) != set(a):
991
			newRecord['a'] = a
990
			newRecord['a'] = a
 Lines 996-1007   def ucs_host_record_create(s4connector, object): Link Here 
996
		zoneDN = __get_zone_dn(s4connector, zoneName)
995
		zoneDN = __get_zone_dn(s4connector, zoneName)
997
996
998
		ud.debug(ud.LDAP, ud.INFO, 'ucs_host_record_create: zoneDN: %s' % zoneDN)
997
		ud.debug(ud.LDAP, ud.INFO, 'ucs_host_record_create: zoneDN: %s' % zoneDN)
999
		superordinate = s4connector_get_superordinate('dns/host_record', s4connector.lo, zoneDN)
1000
		ud.debug(ud.LDAP, ud.INFO, 'ucs_host_record_create: superordinate: %s' % superordinate)
1001
998
1002
		position = univention.admin.uldap.position(zoneDN)
999
		position = univention.admin.uldap.position(zoneDN)
1003
1000
1004
		newRecord = univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position, dn=None, superordinate=superordinate, attributes=[], update_zone=False)
1001
		newRecord = univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position, dn=None, attributes=[], update_zone=False)
1005
		newRecord.open()
1002
		newRecord.open()
1006
		newRecord['name'] = relativeDomainName
1003
		newRecord['name'] = relativeDomainName
1007
		newRecord['a'] = a
1004
		newRecord['a'] = a
 Lines 1018-1025   def ucs_host_record_delete(s4connector, object): Link Here 
1018
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1015
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1019
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1016
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1020
	if len(searchResult) > 0:
1017
	if len(searchResult) > 0:
1021
		superordinate = s4connector_get_superordinate('dns/host_record', s4connector.lo, searchResult[0][0])
1018
		newRecord = univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1022
		newRecord = univention.admin.handlers.dns.host_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1023
		newRecord.open()
1019
		newRecord.open()
1024
		newRecord.delete()
1020
		newRecord.delete()
1025
	else:
1021
	else:
 Lines 1054-1061   def ucs_ptr_record_create(s4connector, object): Link Here 
1054
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1050
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1055
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1051
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1056
	if len(searchResult) > 0:
1052
	if len(searchResult) > 0:
1057
		superordinate = s4connector_get_superordinate('dns/ptr_record', s4connector.lo, searchResult[0][0])
1053
		newRecord = univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1058
		newRecord = univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1059
		newRecord.open()
1054
		newRecord.open()
1060
		if set(newRecord['ptr_record']) != set(ptr):
1055
		if set(newRecord['ptr_record']) != set(ptr):
1061
			newRecord['ptr_record'] = ptr[0]
1056
			newRecord['ptr_record'] = ptr[0]
 Lines 1065-1076   def ucs_ptr_record_create(s4connector, object): Link Here 
1065
	else:
1060
	else:
1066
		zoneDN = __get_zone_dn(s4connector, zoneName)
1061
		zoneDN = __get_zone_dn(s4connector, zoneName)
1067
1062
1068
		superordinate = s4connector_get_superordinate('dns/ptr_record', s4connector.lo, zoneDN)
1069
		ud.debug(ud.LDAP, ud.INFO, 'ucs_ptr_record_create: superordinate: %s' % superordinate)
1070
1071
		position = univention.admin.uldap.position(zoneDN)
1063
		position = univention.admin.uldap.position(zoneDN)
1072
1064
1073
		newRecord = univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position, dn=None, superordinate=superordinate, attributes=[], update_zone=False)
1065
		newRecord = univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position, dn=None, attributes=[], update_zone=False)
1074
		newRecord.open()
1066
		newRecord.open()
1075
		newRecord['address'] = relativeDomainName
1067
		newRecord['address'] = relativeDomainName
1076
		newRecord['ptr_record'] = ptr[0]
1068
		newRecord['ptr_record'] = ptr[0]
 Lines 1087-1094   def ucs_ptr_record_delete(s4connector, object): Link Here 
1087
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1079
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1088
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1080
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1089
	if len(searchResult) > 0:
1081
	if len(searchResult) > 0:
1090
		superordinate = s4connector_get_superordinate('dns/ptr_record', s4connector.lo, searchResult[0][0])
1082
		newRecord = univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1091
		newRecord = univention.admin.handlers.dns.ptr_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1092
		newRecord.open()
1083
		newRecord.open()
1093
		newRecord.delete()
1084
		newRecord.delete()
1094
	else:
1085
	else:
 Lines 1111-1118   def ucs_cname_create(s4connector, object): Link Here 
1111
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1102
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1112
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1103
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1113
	if len(searchResult) > 0:
1104
	if len(searchResult) > 0:
1114
		superordinate = s4connector_get_superordinate('dns/alias', s4connector.lo, searchResult[0][0])
1105
		newRecord = univention.admin.handlers.dns.alias.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1115
		newRecord = univention.admin.handlers.dns.alias.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1116
		newRecord.open()
1106
		newRecord.open()
1117
		if set(newRecord['cname']) != set(c):
1107
		if set(newRecord['cname']) != set(c):
1118
			newRecord['cname'] = c[0]
1108
			newRecord['cname'] = c[0]
 Lines 1122-1133   def ucs_cname_create(s4connector, object): Link Here 
1122
	else:
1112
	else:
1123
		zoneDN = __get_zone_dn(s4connector, zoneName)
1113
		zoneDN = __get_zone_dn(s4connector, zoneName)
1124
1114
1125
		superordinate = s4connector_get_superordinate('dns/alias', s4connector.lo, zoneDN)
1126
		ud.debug(ud.LDAP, ud.INFO, 'ucs_cname_create: superordinate: %s' % superordinate)
1127
1128
		position = univention.admin.uldap.position(zoneDN)
1115
		position = univention.admin.uldap.position(zoneDN)
1129
1116
1130
		newRecord = univention.admin.handlers.dns.alias.object(None, s4connector.lo, position, dn=None, superordinate=superordinate, attributes=[], update_zone=False)
1117
		newRecord = univention.admin.handlers.dns.alias.object(None, s4connector.lo, position, dn=None, attributes=[], update_zone=False)
1131
		newRecord.open()
1118
		newRecord.open()
1132
		newRecord['name'] = relativeDomainName
1119
		newRecord['name'] = relativeDomainName
1133
		newRecord['cname'] = c[0]
1120
		newRecord['cname'] = c[0]
 Lines 1144-1151   def ucs_cname_delete(s4connector, object): Link Here 
1144
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1131
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1145
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1132
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1146
	if len(searchResult) > 0:
1133
	if len(searchResult) > 0:
1147
		superordinate = s4connector_get_superordinate('dns/alias', s4connector.lo, searchResult[0][0])
1134
		newRecord = univention.admin.handlers.dns.alias.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1148
		newRecord = univention.admin.handlers.dns.alias.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1149
		newRecord.open()
1135
		newRecord.open()
1150
		newRecord.delete()
1136
		newRecord.delete()
1151
	else:
1137
	else:
 Lines 1185-1192   def ucs_srv_record_create(s4connector, object): Link Here 
1185
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1171
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1186
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1172
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1187
	if len(searchResult) > 0:
1173
	if len(searchResult) > 0:
1188
		superordinate = s4connector_get_superordinate('dns/srv_record', s4connector.lo, searchResult[0][0])
1174
		newRecord = univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1189
		newRecord = univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1190
		newRecord.open()
1175
		newRecord.open()
1191
		if ucr_locations:
1176
		if ucr_locations:
1192
			ud.debug(ud.LDAP, ud.INFO, 'ucs_srv_record_create: do not write SRV record back from S4 to UCS because location of SRV record have been overwritten by UCR')
1177
			ud.debug(ud.LDAP, ud.INFO, 'ucs_srv_record_create: do not write SRV record back from S4 to UCS because location of SRV record have been overwritten by UCR')
 Lines 1203-1214   def ucs_srv_record_create(s4connector, object): Link Here 
1203
	else:
1188
	else:
1204
		zoneDN = __get_zone_dn(s4connector, zoneName)
1189
		zoneDN = __get_zone_dn(s4connector, zoneName)
1205
1190
1206
		superordinate = s4connector_get_superordinate('dns/srv_record', s4connector.lo, zoneDN)
1207
		ud.debug(ud.LDAP, ud.INFO, 'ucs_srv_record_create: superordinate: %s' % superordinate)
1208
1209
		position = univention.admin.uldap.position(zoneDN)
1191
		position = univention.admin.uldap.position(zoneDN)
1210
1192
1211
		newRecord = univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position, dn=None, superordinate=superordinate, attributes=[], update_zone=False)
1193
		newRecord = univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position, dn=None, attributes=[], update_zone=False)
1212
		newRecord.open()
1194
		newRecord.open()
1213
		# Make syntax UDM compatible
1195
		# Make syntax UDM compatible
1214
		parts = univention.admin.handlers.dns.srv_record.unmapName([relativeDomainName])
1196
		parts = univention.admin.handlers.dns.srv_record.unmapName([relativeDomainName])
 Lines 1235-1242   def ucs_srv_record_delete(s4connector, object): Link Here 
1235
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1217
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1236
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1218
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1237
	if len(searchResult) > 0:
1219
	if len(searchResult) > 0:
1238
		superordinate = s4connector_get_superordinate('dns/srv_record', s4connector.lo, searchResult[0][0])
1220
		newRecord = univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1239
		newRecord = univention.admin.handlers.dns.srv_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1240
		newRecord.open()
1221
		newRecord.open()
1241
		newRecord.delete()
1222
		newRecord.delete()
1242
	else:
1223
	else:
 Lines 1305-1312   def ucs_txt_record_create(s4connector, object): Link Here 
1305
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1286
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1306
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1287
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1307
	if len(searchResult) > 0:
1288
	if len(searchResult) > 0:
1308
		superordinate = s4connector_get_superordinate('dns/txt_record', s4connector.lo, searchResult[0][0])
1289
		foundRecord = univention.admin.handlers.dns.txt_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1309
		foundRecord = univention.admin.handlers.dns.txt_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1310
		foundRecord.open()
1290
		foundRecord.open()
1311
1291
1312
		# use normalized TXT records for comparison
1292
		# use normalized TXT records for comparison
 Lines 1323-1334   def ucs_txt_record_create(s4connector, object): Link Here 
1323
	else:
1303
	else:
1324
		zoneDN = __get_zone_dn(s4connector, zoneName)
1304
		zoneDN = __get_zone_dn(s4connector, zoneName)
1325
1305
1326
		superordinate = s4connector_get_superordinate('dns/txt_record', s4connector.lo, zoneDN)
1327
		ud.debug(ud.LDAP, ud.INFO, 'ucs_txt_record_create: superordinate: %s' % superordinate)
1328
1329
		position = univention.admin.uldap.position(zoneDN)
1306
		position = univention.admin.uldap.position(zoneDN)
1330
1307
1331
		newRecord = univention.admin.handlers.dns.txt_record.object(None, s4connector.lo, position, dn=None, superordinate=superordinate, attributes=[], update_zone=False)
1308
		newRecord = univention.admin.handlers.dns.txt_record.object(None, s4connector.lo, position, dn=None, attributes=[], update_zone=False)
1332
		newRecord.open()
1309
		newRecord.open()
1333
		newRecord['name'] = relativeDomainName
1310
		newRecord['name'] = relativeDomainName
1334
		newRecord[udm_property] = c
1311
		newRecord[udm_property] = c
 Lines 1345-1352   def ucs_txt_record_delete(s4connector, object): Link Here 
1345
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1322
	ol_filter = format_escaped('(&(relativeDomainName={0!e})(zoneName={1!e}))', relativeDomainName, zoneName)
1346
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1323
	searchResult = s4connector.lo.search(filter=ol_filter, unique=True)
1347
	if len(searchResult) > 0:
1324
	if len(searchResult) > 0:
1348
		superordinate = s4connector_get_superordinate('dns/txt_record', s4connector.lo, searchResult[0][0])
1325
		newRecord = univention.admin.handlers.dns.txt_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], attributes=[], update_zone=False)
1349
		newRecord = univention.admin.handlers.dns.txt_record.object(None, s4connector.lo, position=None, dn=searchResult[0][0], superordinate=superordinate, attributes=[], update_zone=False)
1350
		newRecord.open()
1326
		newRecord.open()
1351
		newRecord.delete()
1327
		newRecord.delete()
1352
	else:
1328
	else:
 Lines 1685-1691   def con2ucs(s4connector, key, object): Link Here 
1685
		# ignore move
1661
		# ignore move
1686
1662
1687
	return True
1663
	return True
1688
1689
1690
def s4connector_get_superordinate(module, lo, dn):
1691
	return univention.admin.objects.get_superordinate(module, None, lo, dn)

Return to bug 45068