def update_pool( client, pool_id, json_file=None, start_task_command_line=None, # pylint:disable=too-many-arguments certificate_references=None, application_package_references=None, metadata=None, start_task_run_elevated=None, start_task_environment_settings=None, start_task_wait_for_success=None, start_task_max_task_retry_count=None): def action(): client.update_properties(pool_id=pool_id, pool_update_properties_parameter=param) return client.get(pool_id) if json_file: with open(json_file) as f: json_obj = json.load(f) param = None try: param = client._deserialize('PoolUpdatePropertiesParameter', json_obj) # pylint: disable=protected-access except DeserializationError: pass if not param: raise ValueError( "JSON file '{}' is not in correct format.".format( json_file)) if param.certificate_references is None: param.certificate_references = [] if param.metadata is None: param.metadata = [] if param.application_package_references is None: param.application_package_references = [] else: if certificate_references is None: certificate_references = [] if metadata is None: metadata = [] if application_package_references is None: application_package_references = [] param = PoolUpdatePropertiesParameter(certificate_references, application_package_references, metadata) if start_task_command_line: param.start_task = StartTask( start_task_command_line, environment_settings=start_task_environment_settings, run_elevated=start_task_run_elevated, wait_for_success=start_task_wait_for_success, max_task_retry_count=start_task_max_task_retry_count) return _handle_batch_exception(action)
def update_pool(client, pool_id, json_file=None, start_task_command_line=None, certificate_references=None, application_package_references=None, metadata=None, start_task_environment_settings=None, start_task_wait_for_success=None, start_task_max_task_retry_count=None): if json_file: with open(json_file) as f: json_obj = json.load(f) param = None try: param = PoolUpdatePropertiesParameter.from_dict(json_obj) except DeserializationError: pass if not param: raise ValueError( "JSON file '{}' is not in correct format.".format( json_file)) if param.certificate_references is None: param.certificate_references = [] if param.metadata is None: param.metadata = [] if param.application_package_references is None: param.application_package_references = [] else: if certificate_references is None: certificate_references = [] if metadata is None: metadata = [] if application_package_references is None: application_package_references = [] param = PoolUpdatePropertiesParameter(certificate_references, application_package_references, metadata) if start_task_command_line: param.start_task = StartTask( start_task_command_line, environment_settings=start_task_environment_settings, wait_for_success=start_task_wait_for_success, max_task_retry_count=start_task_max_task_retry_count) client.update_properties(pool_id=pool_id, pool_update_properties_parameter=param) return client.get(pool_id)
def create_pool(client, account_name=None, account_endpoint=None, # pylint:disable=too-many-arguments, too-many-locals template=None, parameters=None, json_file=None, id=None, vm_size=None, target_dedicated=None, auto_scale_formula=None, # pylint: disable=redefined-builtin enable_inter_node_communication=False, os_family=None, image=None, node_agent_sku_id=None, resize_timeout=None, start_task_command_line=None, start_task_resource_files=None, start_task_wait_for_success=False, certificate_references=None, application_package_references=None, metadata=None): # pylint: disable=too-many-branches, too-many-statements if template or json_file: if template: logger.warning('You are using an experimental feature {Pool Template}.') expanded_pool_object = template_utils.expand_template(template, parameters) if 'pool' not in expanded_pool_object: raise ValueError('Missing pool element in the template.') if 'properties' not in expanded_pool_object['pool']: raise ValueError('Missing pool properties element in the template.') # bulid up the jsonFile object to hand to the batch service. json_obj = expanded_pool_object['pool']['properties'] else: with open(json_file) as f: json_obj = json.load(f) # validate the json file pool = client._deserialize('PoolAddParameter', json_obj) # pylint:disable=protected-access if pool is None: raise ValueError("JSON file '{}' is not in correct format.".format(json_file)) # Handle package manangement if 'packageReferences' in json_obj: logger.warning('You are using an experimental feature {Package Management}.') pool_os_flavor = pool_utils.get_pool_target_os_type(json_obj) cmds = [template_utils.process_pool_package_references(json_obj)] # Update the start up command json_obj['startTask'] = template_utils.construct_setup_task( json_obj.get('startTask'), cmds, pool_os_flavor) # Handle any special post-processing steps. # - Resource Files # - etc file_utils = FileUtils(None, account_name, None, account_endpoint) json_obj = template_utils.post_processing(json_obj, file_utils) # Batch Shipyard integration if 'clientExtensions' in json_obj and 'dockerOptions' in json_obj['clientExtensions']: logger.warning('You are using an experimental feature {Batch Shipyard}.') # batchShipyardUtils.createPool(json_obj, options, cli) # return # We deal all NCJ work with pool, now convert back to original type pool = client._deserialize('PoolAddParameter', json_obj) # pylint: disable=protected-access else: if not id: raise ValueError('Need either template, json_file, or id') pool = PoolAddParameter(id, vm_size=vm_size) if auto_scale_formula: pool.auto_scale_formula = auto_scale_formula pool.enable_auto_scale = True else: pool.target_dedicated = target_dedicated pool.enable_auto_scale = False pool.enable_inter_node_communication = enable_inter_node_communication if os_family: pool.cloud_service_configuration = CloudServiceConfiguration(os_family) else: if image: version = 'latest' try: publisher, offer, sku = image.split(':', 2) except ValueError: message = ("Incorrect format for VM image URN. Should be in the format: \n" "'publisher:offer:sku[:version]'") raise ValueError(message) try: sku, version = sku.split(':', 1) except ValueError: pass pool.virtual_machine_configuration = VirtualMachineConfiguration( ImageReference(publisher, offer, sku, version), node_agent_sku_id) if start_task_command_line: pool.start_task = StartTask(start_task_command_line) pool.start_task.wait_for_success = start_task_wait_for_success pool.start_task.resource_files = start_task_resource_files if resize_timeout: pool.resize_timeout = resize_timeout if metadata: pool.metadata = metadata if certificate_references: pool.certificate_references = certificate_references if application_package_references: pool.application_package_references = application_package_references add_option = PoolAddOptions() job_utils._handle_batch_exception(lambda: client.pool.add(pool, add_option)) # pylint: disable=protected-access