def create_or_update_backend_set(lb_client, module):
    backend_set = None
    result = dict(changed=False, backend_set="")
    lb_id = module.params.get("load_balancer_id")
    name = module.params.get("name")
    backend_set = oci_utils.get_existing_resource(
        lb_client.get_backend_set, module, load_balancer_id=lb_id, backend_set_name=name
    )
    try:
        if backend_set:
            result = update_backend_set(lb_client, module, lb_id, backend_set, name)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type="backend_set",
                create_fn=create_backend_set,
                kwargs_create={"lb_client": lb_client, "module": module},
                list_fn=lb_client.list_backend_sets,
                kwargs_list={"load_balancer_id": lb_id},
                module=module,
                model=CreateBackendSetDetails(),
            )
    except ServiceError as ex:
        get_logger().error("Unable to create/update backend set due to: %s", ex.message)
        module.fail_json(msg=ex.message)
    except ClientError as ex:
        get_logger().error("Unable to create/update backend set due to: %s", str(ex))
        module.fail_json(msg=str(ex))

    return result
def create_backend_set(lb_client, module):
    backen_end_set_input_details = dict({
        'backends':
        module.params.get('backends', None),
        'health_checker':
        module.params.get('health_checker'),
        'policy':
        module.params.get('policy'),
        'session_persistence_configuration':
        module.params.get('session_persistence_configuration', None),
        'ssl_configuration':
        module.params.get('ssl_configuration', None)
    })
    name = module.params.get('name')
    lb_id = module.params.get('load_balancer_id')
    get_logger().info("Creating backend set %s in the load balancer %s", name,
                      lb_id)
    backend_set_details = oci_lb_utils.create_backend_sets(
        dict({name: backen_end_set_input_details})).get(name)
    create_backend_set_details = CreateBackendSetDetails()
    for attribute in create_backend_set_details.attribute_map:
        create_backend_set_details.__setattr__(
            attribute, getattr(backend_set_details, attribute, None))
    create_backend_set_details.name = name
    result = oci_lb_utils.create_or_update_lb_resources_and_wait(
        resource_type="backend_set",
        function=lb_client.create_backend_set,
        kwargs_function={
            'create_backend_set_details': create_backend_set_details,
            'load_balancer_id': lb_id
        },
        lb_client=lb_client,
        get_fn=lb_client.get_backend_set,
        kwargs_get={
            'load_balancer_id': lb_id,
            'backend_set_name': name
        },
        module=module)
    get_logger().info(
        "Successfully created backend set %s in the load balancer %s", name,
        lb_id)

    return result
def create_backend_set(lb_client, module):
    backen_end_set_input_details = dict(
        {
            "backends": module.params.get("backends", None),
            "health_checker": module.params.get("health_checker"),
            "policy": module.params.get("policy"),
            "session_persistence_configuration": module.params.get(
                "session_persistence_configuration", None
            ),
            "ssl_configuration": module.params.get("ssl_configuration", None),
        }
    )
    name = module.params.get("name")
    lb_id = module.params.get("load_balancer_id")
    get_logger().info("Creating backend set %s in the load balancer %s", name, lb_id)
    backend_set_details = oci_lb_utils.create_backend_sets(
        dict({name: backen_end_set_input_details})
    ).get(name)
    create_backend_set_details = CreateBackendSetDetails()
    for attribute in create_backend_set_details.attribute_map:
        create_backend_set_details.__setattr__(
            attribute, getattr(backend_set_details, attribute, None)
        )
    create_backend_set_details.name = name
    result = oci_lb_utils.create_or_update_lb_resources_and_wait(
        resource_type="backend_set",
        function=lb_client.create_backend_set,
        kwargs_function={
            "create_backend_set_details": create_backend_set_details,
            "load_balancer_id": lb_id,
        },
        lb_client=lb_client,
        get_fn=lb_client.get_backend_set,
        kwargs_get={"load_balancer_id": lb_id, "backend_set_name": name},
        module=module,
    )
    get_logger().info(
        "Successfully created backend set %s in the load balancer %s", name, lb_id
    )

    return result
def create_backend_set(lb_client, module):
    result = dict()
    backen_end_set_input_details = dict({
        'backends':
        module.params.get('backends', None),
        'health_checker':
        module.params.get('health_checker'),
        'policy':
        module.params.get('policy'),
        'session_persistence_configuration':
        module.params.get('session_persistence_configuration', None),
        'ssl_configuration':
        module.params.get('ssl_configuration', None)
    })
    name = module.params.get('name')
    lb_id = module.params.get('load_balancer_id')
    get_logger().info("Creating backend set %s in the load balancer %s", name,
                      lb_id)
    backend_set_details = oci_lb_utils.create_backend_sets(
        dict({name: backen_end_set_input_details})).get(name)
    create_backend_set_details = CreateBackendSetDetails()
    create_backend_set_details.name = name
    create_backend_set_details.backends = backend_set_details.backends
    create_backend_set_details.health_checker = backend_set_details.health_checker
    create_backend_set_details.policy = backend_set_details.policy
    create_backend_set_details.session_persistence_configuration = \
        backend_set_details.session_persistence_configuration
    create_backend_set_details.ssl_configuration = backend_set_details.ssl_configuration
    response = oci_utils.call_with_backoff(
        lb_client.create_backend_set,
        create_backend_set_details=create_backend_set_details,
        load_balancer_id=lb_id)
    oci_lb_utils.verify_work_request(lb_client, response)
    get_logger().info(
        "Successfully created backend set %s in the load balancer %s", name,
        lb_id)
    backend_set = get_existing_backend_set(lb_client, module, lb_id, name)
    result['backend_set'] = to_dict(backend_set)
    result['changed'] = True
    return result
def create_or_update_backend_set(lb_client, module):
    backend_set = None
    result = dict(changed=False, backend_set='')
    load_balancer_id = module.params.get('load_balancer_id')
    name = module.params.get('name')
    backend_set = get_existing_backend_set(lb_client, module, load_balancer_id,
                                           name)
    try:
        if backend_set:
            changed, backend_set = update_backend_set(lb_client, module,
                                                      load_balancer_id,
                                                      backend_set, name)
            result['changed'] = changed
            result['backend_set'] = to_dict(backend_set)
        else:
            result = oci_utils.check_and_create_resource(
                resource_type='backend_set',
                create_fn=create_backend_set,
                kwargs_create={
                    'lb_client': lb_client,
                    'module': module
                },
                list_fn=lb_client.list_backend_sets,
                kwargs_list={
                    'load_balancer_id': module.params.get('load_balancer_id')
                },
                module=module,
                model=CreateBackendSetDetails())
    except ServiceError as ex:
        get_logger().error("Unable to create/update backend set due to: %s",
                           ex.message)
        module.fail_json(msg=ex.message)
    except ClientError as ex:
        get_logger().error("Unable to create/update backend set due to: %s",
                           str(ex))
        module.fail_json(msg=str(ex))

    return result