diff --git a/ipaserver/globalcatalog/templates/gc_base.tmpl b/ipaserver/globalcatalog/templates/gc_base.tmpl new file mode 100644 index 00000000000..f5e73c1eb31 --- /dev/null +++ b/ipaserver/globalcatalog/templates/gc_base.tmpl @@ -0,0 +1,14 @@ +{% macro add_objectclass(attr, objectclass, entry, ns) -%} +{%- if attr in entry -%} +{%- if not (objectclass in ns.objectclasses) -%} +{%- set ns.objectclasses = ns.objectclasses + [objectclass] -%} +{%- endif -%} +{%- endif -%} +{%- endmacro -%} +{%- macro print_attr(attr, entry) %} +{%- if attr in entry -%} +{%- for el in entry[attr] %} +{{ attr }}: {{- el -}} +{% endfor -%} +{% endif -%} +{% endmacro -%} diff --git a/ipaserver/globalcatalog/templates/gc_group_template.tmpl b/ipaserver/globalcatalog/templates/gc_group_template.tmpl index 31f5ae101e7..e0fa93c94ea 100644 --- a/ipaserver/globalcatalog/templates/gc_group_template.tmpl +++ b/ipaserver/globalcatalog/templates/gc_group_template.tmpl @@ -1,24 +1,21 @@ +{%- set ns = namespace(objectclasses=['top', 'ad-top', 'group', 'securityprincipal', 'nsmemberof', 'gcobject']) -%} +{%- import "gc_base.tmpl" as base -%} +{{- base.add_objectclass('gidnumber', 'posixgroup', entry, ns) -}} dn: cn={{ pkey }},cn=users,{{ suffix }} -objectClass: top -objectClass: ad-top -objectClass: group -objectClass: securityprincipal -objectClass: nsmemberof -objectClass: gcobject cn: {{ pkey }} +{%- for el in ns.objectclasses %} +objectclass: {{ el }} +{%- endfor %} instanceType: 4 +groupType: {{ groupType }} +gcuuid: {{ entryuuid }} name: {{ pkey }} objectGUID:: {{ guid }} objectSid:: {{ sid }} -sAMAccountName: {{ pkey }} +sAMAccountName: {{ pkey }} sAMAccountType: 268435456 objectCategory: CN=Group,CN=Schema,CN=Configuration,{{ suffix }} ntsecuritydescriptor: D:(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;DA)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;SY)(A;;RPLCLORC;;;AU)(A;;RPWPCRCCDCLCLORCWOWDSDDTSW;;;AO)(A;;RPLCLORC;;;PS)(OA;;CR;ab721a55-1e2f-11d0-9819-00aa0040529b;;AU) -{%- for member in entry['member'] %} -member: {{ member }} -{%- endfor %} -{%- for group in entry['memberof'] %} -memberof: {{ group }} -{%- endfor %} -groupType: {{ groupType }} -gcuuid: {{ entryuuid }} +{{- base.print_attr('member', entry) -}} +{{- base.print_attr('memberof', entry) -}} +{{- base.print_attr('gidnumber', entry) -}}