def _generate_public_access_policy():
    access_policy_pyxb = dataoneTypes.accessPolicy()
    access_rule_pyxb = dataoneTypes.AccessRule()
    access_rule_pyxb.subject.append(d1_common.const.SUBJECT_PUBLIC)
    permission_pyxb = dataoneTypes.Permission('read')
    access_rule_pyxb.permission.append(permission_pyxb)
    access_policy_pyxb.append(access_rule_pyxb)
    return access_policy_pyxb
        oopts['rightsHolder'] = options.submitter
    else:
        oopts['rightsHolder'] = options.rightsHolder
    oopts['originMemberNode'] = options.originMemberNode
    oopts['authoritativeMemberNode'] = options.originMemberNode

    defrepl = dataoneTypes_v1.ReplicationPolicy()
    if options.numberReplicas == 0:
        defrepl.replicationAllowed = False
    else:
        defrepl.replicationAllowed = True
        defrepl.numberReplicas = options.numberReplicas
    oopts['replicationPolicy'] = defrepl

    defap = dataoneTypes_v1.AccessPolicy()
    ar = dataoneTypes_v1.AccessRule()
    ar.permission = [
        dataoneTypes_v1.Permission.read,
    ]
    ar.subject = [
        "public",
    ]
    defap.allow = [
        ar,
    ]
    ar = dataoneTypes_v1.AccessRule()
    ar.permission = [
        dataoneTypes_v1.Permission.write,
    ]
    ar.subject = [
        oopts['submitter'],