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
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
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
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'))
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)
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)
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
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
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)
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'))
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"))
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'))
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'))
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
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
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
def etag_of_folder(folder: CREFolder) -> ETags: return constructors.etag_of_dict( { "path": folder.path(), "attributes": folder.attributes(), "hosts": folder.host_names(), } )
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'))
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'))
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"))
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(), })
def _require_host_etag(host): etag_values = _host_etag_values(host) constructors.require_etag( constructors.etag_of_dict(etag_values), error_details=etag_values, )
def etag_of_folder(folder: CREFolder) -> ETags: return constructors.etag_of_dict({ 'path': folder.path(), 'attributes': folder.attributes(), 'hosts': folder.host_names(), })
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)
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)