def update_security_perimeter()

in dialogflow-cx/vpc-sc-demo/backend/update_utilities.py [0:0]


def update_security_perimeter(request, api):
    """Update security perimeter."""

    data = get_service_perimeter_data(request)
    if "response" in data:
        return data["response"]
    token = data["token"]
    project_id = data["project_id"]
    restrict_access = data["restrict_access"]
    access_policy_name = data["access_policy_name"]

    service_perimeter_status = su.get_service_perimeter_status(
        token, project_id, access_policy_name
    )
    response = update_service_perimeter_status_inplace(
        api, restrict_access, service_perimeter_status
    )
    if response:
        return response

    headers = {}
    headers["x-goog-user-project"] = project_id
    headers["Authorization"] = f"Bearer {token}"
    response = su.get_service_perimeter_data_uri(token, project_id, access_policy_name)
    if "response" in response:
        return response
    service_perimeter_data_uri = response["uri"]
    result = requests.patch(
        service_perimeter_data_uri,
        headers=headers,
        json=service_perimeter_status,
        params={"updateMask": "status.restrictedServices"},
        timeout=10,
    )
    if result.status_code != 200:
        logger.info(
            "  accesscontextmanager API rejected PATCH request: %s", result.text
        )
        return flask.Response(status=result.status_code, response=result.text)
    return flask.Response(status=200)