Пример #1
0
def _serve_host_tag_group(tag_details: Dict[str, Any]) -> Response:
    response = Response()
    response.set_data(json.dumps(serialize_host_tag_group(tag_details)))
    response.set_content_type('application/json')
    response.headers.add('ETag',
                         constructors.etag_of_dict(tag_details).to_header())
    return response
Пример #2
0
def serve_user(user_id):
    response = Response()
    user_attributes = user_config_attributes(user_id)
    response.set_data(json.dumps(serialize_user(user_id, user_attributes)))
    response.set_content_type('application/json')
    response.headers.add('ETag', constructors.etag_of_dict(user_attributes).to_header())
    return response
Пример #3
0
def _serve_time_period(time_period):
    response = Response()
    response.set_data(json.dumps(time_period))
    response.set_content_type('application/json')
    response.headers.add('ETag',
                         constructors.etag_of_dict(time_period).to_header())
    return response
Пример #4
0
def update(params):
    name = params['name']
    group = _fetch_contact_group(name)
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, 'contact', params['body'])
    group = _fetch_contact_group(name)
    return serve_group(group, serialize_group('contact_group'))
Пример #5
0
def delete(params):
    """Delete a host-group"""
    name = params['name']
    group = _fetch_host_group(name)
    constructors.require_etag(constructors.etag_of_dict(group))
    watolib.delete_group(name, 'host')
    return Response(status=204)
Пример #6
0
def delete(params):
    """Delete a service-group"""
    name = params['name']
    group = fetch_group(name, "service")
    constructors.require_etag(constructors.etag_of_dict(group))
    watolib.delete_group(name, group_type='service')
    return Response(status=204)
Пример #7
0
def _serve_host(host, effective_attributes=False):
    response = Response()
    response.set_data(json.dumps(serialize_host(host, effective_attributes)))
    response.set_content_type("application/json")
    etag = constructors.etag_of_dict(_host_etag_values(host))
    response.headers.add("ETag", etag.to_header())
    return response
Пример #8
0
def serve_group(group, serializer):
    response = Response()
    response.set_data(json.dumps(serializer(group)))
    if response.status_code != 204:
        response.set_content_type('application/json')
    response.headers.add('ETag', constructors.etag_of_dict(group).to_header())
    return response
Пример #9
0
def delete(params):
    """Delete a contact group"""
    name = params['name']
    group = fetch_group(name, "contact")
    constructors.require_etag(constructors.etag_of_dict(group))
    watolib.delete_group(name, 'contact')
    return Response(status=204)
Пример #10
0
def update(params):
    """Update a contact group"""
    name = params['name']
    group = fetch_group(name, "contact")
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, 'contact', params['body'])
    group = fetch_group(name, "contact")
    return serve_group(group, serialize_group('contact_group_config'))
Пример #11
0
def update(params):
    """Update a host group"""
    name = params["name"]
    group = fetch_group(name, "host")
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, "host", updated_group_details(name, "host", params["body"]))
    group = fetch_group(name, "host")
    return serve_group(group, serialize_group("host_group_config"))
Пример #12
0
def update(params):
    """Update a service-group"""
    name = params['name']
    group = _fetch_service_group(name)
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, 'service', params['body'])
    group = _fetch_service_group(name)
    return serve_group(group, serialize_group('service_group'))
Пример #13
0
def update(params):
    """Update a host-group"""
    name = params['name']
    group = _fetch_host_group(name)
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, 'host', params['body'])
    group = _fetch_host_group(name)
    return serve_group(group, serialize_group('host_group_config'))
Пример #14
0
def _serve_password(ident, password_details):
    response = Response()
    response.set_data(json.dumps(serialize_password(ident, password_details)))
    response.set_content_type('application/json')
    response.headers.add(
        'ETag',
        constructors.etag_of_dict(password_details).to_header())
    return response
Пример #15
0
def _serve_host_tag_group(tag_details: TaggroupSpec) -> Response:
    response = Response()
    response.set_data(json.dumps(serialize_host_tag_group(dict(tag_details))))
    response.set_content_type("application/json")
    response.headers.add(
        "ETag",
        constructors.etag_of_dict(dict(tag_details)).to_header())
    return response
Пример #16
0
def serve_user(user_id):
    response = Response()
    user_attributes_internal = _load_user(user_id)
    user_attributes = _internal_to_api_format(user_attributes_internal)
    response.set_data(json.dumps(serialize_user(user_id, complement_customer(user_attributes))))
    response.set_content_type("application/json")
    response.headers.add("ETag", constructors.etag_of_dict(user_attributes).to_header())
    return response
Пример #17
0
def etag_of_folder(folder: CREFolder) -> ETags:
    return constructors.etag_of_dict(
        {
            "path": folder.path(),
            "attributes": folder.attributes(),
            "hosts": folder.host_names(),
        }
    )
Пример #18
0
def update(params):
    """Update a service-group"""
    name = params['name']
    group = fetch_group(name, "service")
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, group_type='service', extra_info=params['body'])
    group = fetch_group(name, "service")
    return serve_group(group, serialize_group('service_group_config'))
Пример #19
0
def update(params):
    """Update a host group"""
    name = params['name']
    group = fetch_group(name, "host")
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, 'host', updated_group_details(name, 'host',
                                                   params['body']))
    group = fetch_group(name, "host")
    return serve_group(group, serialize_group('host_group_config'))
Пример #20
0
def update(params):
    """Update a contact group"""
    user.need_permission("wato.edit")
    name = params["name"]
    group = fetch_group(name, "contact")
    constructors.require_etag(constructors.etag_of_dict(group))
    edit_group(name, "contact",
               updated_group_details(name, "contact", params["body"]))
    group = fetch_group(name, "contact")
    return serve_group(group, serialize_group("contact_group_config"))
Пример #21
0
def etag_of_host(host: watolib.CREHost) -> ETags:
    # FIXME: Through some not yet fully explored effect, we do not get the actual persisted
    #        timestamp in the meta_data section but rather some other timestamp. This makes the
    #        reported ETag a different one than the one which is accepted by the endpoint.
    return constructors.etag_of_dict({
        "name":
        host.name(),
        "attributes":
        _except_keys(host.attributes(), ["meta_data"]),
        "cluster_nodes":
        host.cluster_nodes(),
    })
Пример #22
0
def _require_host_etag(host):
    etag_values = _host_etag_values(host)
    constructors.require_etag(
        constructors.etag_of_dict(etag_values),
        error_details=etag_values,
    )
Пример #23
0
def etag_of_folder(folder: CREFolder) -> ETags:
    return constructors.etag_of_dict({
        'path': folder.path(),
        'attributes': folder.attributes(),
        'hosts': folder.host_names(),
    })
Пример #24
0
def delete(params):
    name = params['name']
    group = _fetch_contact_group(name)
    constructors.require_etag(constructors.etag_of_dict(group))
    watolib.delete_group(name, 'contact')
    return Response(status=204)
Пример #25
0
def delete(params):
    name = params['name']
    group = _fetch_host_group(name)
    constructors.require_etag(constructors.etag_of_dict(group))
    watolib.delete_group(name, 'host')
    return constructors.sucess(status=204)