def create_node_pool(container_engine_client, module): create_node_pool_details = CreateNodePoolDetails() for attribute in create_node_pool_details.attribute_map.keys(): if attribute in module.params: setattr(create_node_pool_details, attribute, module.params[attribute]) node_labels = module.params['initial_node_labels'] if node_labels: initial_node_labels = [] for d in node_labels: keyvalue = KeyValue() if d.get("key", None) and d.get("value", None): keyvalue.key = d.get("key") keyvalue.value = d.get("value") initial_node_labels.append(keyvalue) create_node_pool_details.initial_node_labels = initial_node_labels result = oci_ce_utils.create_and_wait( resource_type="node_pool", create_fn=container_engine_client.create_node_pool, kwargs_create={"create_node_pool_details": create_node_pool_details}, client=container_engine_client, get_fn=container_engine_client.get_node_pool, get_param="node_pool_id", module=module) return result
def create_node_pool(container_engine_client, module): create_node_pool_details = CreateNodePoolDetails() for attribute in create_node_pool_details.attribute_map.keys(): if attribute in module.params: setattr(create_node_pool_details, attribute, module.params[attribute]) node_labels = module.params["initial_node_labels"] if node_labels: initial_node_labels = [] for d in node_labels: keyvalue = KeyValue() if d.get("key", None) and d.get("value", None): keyvalue.key = d.get("key") keyvalue.value = d.get("value") initial_node_labels.append(keyvalue) create_node_pool_details.initial_node_labels = initial_node_labels # Note: `wait` is "True" by default for `oci_node_pool`, unlike other resources because a node pool is only useful # if atleast one node in the node pool reaches ACTIVE state (Installation of Helm components are delayed until a # node is available). result = oci_ce_utils.create_and_wait( resource_type="node_pool", create_fn=container_engine_client.create_node_pool, kwargs_create={"create_node_pool_details": create_node_pool_details}, client=container_engine_client, get_fn=container_engine_client.get_node_pool, get_param="node_pool_id", module=module, ) return result
def main(): module_args = oci_utils.get_common_arg_spec(supports_create=True, supports_wait=True) module_args.update( dict(compartment_id=dict(type='str', required=False), node_pool_id=dict(type='str', required=False, aliases=['id']), cluster_id=dict(type='str', required=False), kubernetes_version=dict(type='str', required=False), name=dict(type='str', required=False), initial_node_labels=dict(type=list, required=False), subnet_ids=dict(type=list, required=False), state=dict(type='str', required=False, default='present', choices=['absent', 'present']), node_image_name=dict(type='str', required=False), node_shape=dict(type='str', required=False), quantity_per_subnet=dict(type='int', required=False), ssh_public_key=dict(type='str', required=False), count_of_nodes_to_wait=dict(type=int, required=False, default=1), wait_until=dict(type='str', required=False, default="ACTIVE"))) module = AnsibleModule(argument_spec=module_args, supports_check_mode=False, required_if=[('state', 'absent', ['node_pool_id'])]) if not HAS_OCI_PY_SDK: module.fail_json(msg='oci python sdk required for this module.') container_engine_client = oci_utils.create_service_client( module, ContainerEngineClient) state = module.params['state'] node_pool_id = module.params['node_pool_id'] if state == 'absent': result = delete_node_pool(container_engine_client, module) else: if node_pool_id is not None: result = update_node_pool(container_engine_client, module) else: kwargs_list = {'compartment_id': module.params['compartment_id']} exclude_attributes = {'name': True} result = oci_utils.check_and_create_resource( resource_type='node_pool', create_fn=create_node_pool, kwargs_create={ 'container_engine_client': container_engine_client, 'module': module }, list_fn=container_engine_client.list_node_pools, kwargs_list=kwargs_list, module=module, model=CreateNodePoolDetails(), exclude_attributes=exclude_attributes) module.exit_json(**result)
def main(): module_args = oci_utils.get_common_arg_spec(supports_create=True, supports_wait=True) module_args.update( dict( compartment_id=dict(type="str", required=False), node_pool_id=dict(type="str", required=False, aliases=["id"]), cluster_id=dict(type="str", required=False), kubernetes_version=dict(type="str", required=False), name=dict(type="str", required=False), initial_node_labels=dict(type=list, required=False), subnet_ids=dict(type=list, required=False), node_config_details=dict( type="dict", options=dict( size=dict(type="int"), placement_configs=dict( type="list", elements="dict", options=dict( availability_domain=dict(type="str", required=True), subnet_id=dict(type="str", required=True), ), ), ), required=False, ), state=dict( type="str", required=False, default="present", choices=["absent", "present"], ), node_image_name=dict(type="str", required=False), node_shape=dict(type="str", required=False), quantity_per_subnet=dict(type="int", required=False), ssh_public_key=dict(type="str", required=False), count_of_nodes_to_wait=dict(type=int, required=False, default=1), wait_until=dict(type="str", required=False, default="ACTIVE"), )) module = AnsibleModule( argument_spec=module_args, supports_check_mode=False, required_if=[("state", "absent", ["node_pool_id"])], ) if not HAS_OCI_PY_SDK: module.fail_json(msg="oci python sdk required for this module.") container_engine_client = oci_utils.create_service_client( module, ContainerEngineClient) state = module.params["state"] node_pool_id = module.params["node_pool_id"] if state == "absent": result = delete_node_pool(container_engine_client, module) else: if node_pool_id is not None: result = update_node_pool(container_engine_client, module) else: kwargs_list = {"compartment_id": module.params["compartment_id"]} exclude_attributes = {"name": True} result = oci_utils.check_and_create_resource( resource_type="node_pool", create_fn=create_node_pool, kwargs_create={ "container_engine_client": container_engine_client, "module": module, }, list_fn=container_engine_client.list_node_pools, kwargs_list=kwargs_list, module=module, model=CreateNodePoolDetails(), exclude_attributes=exclude_attributes, ) module.exit_json(**result)
def prepare_create_node_pool_details(**kwargs): # Discover the image_id if the name is provided create_node_pool_details = { k: v for k, v in kwargs.items() if hasattr(CreateNodePoolDetails, k) } return CreateNodePoolDetails(**create_node_pool_details)