Ejemplo n.º 1
0
def update_project(obj, name, payload):

    client = get_api_client()
    LOG.info("Searching for project")
    project = get_project(client, name)

    new_name = payload["project_detail"]["name"]
    if name != new_name:
        # Search whether any other project exists with new name
        LOG.info("\nSearching project with name {}".format(new_name))
        try:
            get_project(client, new_name)
            err_msg = "Another project exists with name {}".format(new_name)
            err = {"error": err_msg, "code": -1}
            return None, err

        except Exception:
            LOG.info("No project exists with name {}".format(new_name))

    project_id = project["metadata"]["uuid"]
    spec_version = project["metadata"]["spec_version"]
    ProjectValidator.validate_dict(payload)

    payload = {
        "api_version": "3.0",  # TODO Remove by a constant
        "metadata": {
            "kind": "project",
            "uuid": project_id,
            "spec_version": spec_version,
        },
        "spec": payload,
    }

    LOG.info("Updating the project")
    return client.project.update(project_id, payload)
Ejemplo n.º 2
0
def create_project(obj, payload):

    name = payload["project_detail"]["name"]
    client = get_api_client()

    # check if project having same name exists
    LOG.info("Searching for projects having same name ")
    params = {"filter": "name=={}".format(name)}
    res, err = client.project.list(params=params)
    if err:
        return None, err

    response = res.json()
    entities = response.get("entities", None)
    if entities:
        if len(entities) > 0:
            err_msg = "Project with name {} already exists".format(name)
            err = {"error": err_msg, "code": -1}
            return None, err

    LOG.info("Creating the project {}".format(name))

    # validating the payload
    ProjectValidator.validate_dict(payload)
    payload = {
        "api_version": "3.0",  # TODO Remove by a constant
        "metadata": {"kind": "project"},
        "spec": payload,
    }

    return client.project.create(payload)