def get_job_details(self, job_id): """ Get the details of the SyncIQ job. :param job_id: Specifies the id or name of the policy job :return: if exists returns details of the SyncIQ job else returns None. """ try: api_response = \ self.sync_api_instance.list_sync_jobs().jobs jobs = [job.to_dict() for job in api_response if job.id == job_id] return jobs except utils.ApiException as e: if str(e.status) == '404': error_message = "SyncIQ job %s details are not " \ "found" % (job_id) LOG.info(error_message) return None error_message = 'Get details of SyncIQ job %s failed with ' \ 'error: %s' % (job_id, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_message = 'Get details of SyncIQ job %s failed with ' \ 'error: %s' % (job_id, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_ldap_details(self, ldap_name): """ Get the details of the LDAP provider. :param ldap_name: Specifies the LDAP provider name. :return: if exists returns details of the LDAP provider else returns None. """ try: api_response = self.auth_api_instance.get_providers_ldap_by_id( ldap_name) return api_response.ldap[0].to_dict() except utils.ApiException as e: if str(e.status) == '404': error_message = "LDAP provider {0} details are not found".\ format(ldap_name) LOG.info(error_message) return None error_message = 'Get details of LDAP provider {0} failed with ' \ 'error: {1}'.format(ldap_name, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_message = 'Get details of LDAP provider {0} failed with ' \ 'error: {1}'.format(ldap_name, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_network_rule(self, groupnet, subnet, pool, rule): """ Get configuration details for a specific rule """ rule_details = {} try: current_rule_details = self.network_api_instance.get_pools_pool_rule(rule, groupnet, subnet, pool) current_rule_details = current_rule_details.to_dict() rule_details.update(current_rule_details['rules'][0]) except utils.ApiException as e: if str(e.status) == "404": error_message = "Details of Network rule %s are not found" % rule LOG.info(error_message) return None else: error_msg = utils.determine_error(error_obj=e) error_message = 'Unable to retrieve details of rule %s. ' \ 'failed with error: %s' % (rule, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Unable to retrieve details of rule %s. ' \ 'failed with error: %s' % (rule, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message) return rule_details
def get_groupnet_details(self, groupnet_name): """ Get the details of the groupnet. :param groupnet_name: Specifies the groupnet name. :return: If exists returns details of the groupnet else returns None. """ try: api_response = \ self.network_api.get_network_groupnet(groupnet_name).to_dict() if api_response: api_response = api_response['groupnets'][0] return api_response except utils.ApiException as e: if str(e.status) == '404': error_message = "Groupnet %s details are not found"\ % groupnet_name LOG.info(error_message) return [] error_msg = utils.determine_error(error_obj=e) error_message = 'Getting details of groupnet %s ' \ 'failed with error: %s' % (groupnet_name, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Getting details of groupnet %s ' \ 'failed with error: %s' % (groupnet_name, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_ads_details(self, ads_name): """ Get the details of the Active Directory provider. :param ads_name: Specifies the Active Directory provider name. :return: if exists returns details of the Active Directory provider else returns None. """ try: ads_api_response = [] for name in ads_name: api_response = self.auth_api_instance.get_providers_ads_by_id( name) ads_api_response.append(api_response.ads[0].to_dict()) return ads_api_response except utils.ApiException as e: if str(e.status) == '404': error_message = "ADS provider {0} details are not found".\ format(ads_name) LOG.info(error_message) return None else: error_message = 'Get details of ADS provider {0} failed with ' \ 'error: {1}'.format(ads_name, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_message = 'Get details of ADS provider {0} failed with ' \ 'error: {1}'.format(ads_name, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def update(self, ldap_name, modified_ldap): """ Modify the details of the LDAP provider. :param ldap_name: Specifies the LDAP provider name. :param modified_ldap: Parameters to modify. :return: True if the operation is successful. """ ldap_update_params = {} try: for key in modified_ldap: ldap_update_params[key] = modified_ldap[key] ldap_provider_params = utils.isi_sdk.ProvidersLdapIdParams( **ldap_update_params) self.auth_api_instance.update_providers_ldap_by_id( providers_ldap_id_params=ldap_provider_params, providers_ldap_id=ldap_name) message = "LDAP provider updated successfully." LOG.info(message) return True except utils.ApiException as e: error_message = "Modifying LDAP provider failed with" + \ utils.determine_error(error_obj=e) LOG.error(error_message) self.module.fail_json(msg=error_message)
def update(self, ads_name, modified_ads, domain, instance): """ Modify the details of the Active Directory provider. :param ads_name: Specifies the Active Directory provider name. :param modified_ads: Parameters to modify. :param domain: Specifies the Active Directory provider name. :param instance: Specifies Active Directory provider instance. :return: True if the operation is successful. """ ads_update_params = {} try: for key in modified_ads: ads_update_params[key] = modified_ads[key] ads_provider_params = utils.isi_sdk.ProvidersAdsIdParams( **ads_update_params) self.auth_api_instance.update_providers_ads_by_id( providers_ads_id_params=ads_provider_params, providers_ads_id=ads_name) message = "ADS provider updated successfully." LOG.info(message) return True except utils.ApiException as e: error_message = "Modifying ADS provider failed with" + \ utils.determine_error(error_obj=e) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_attributes_list(self): """Get the list of attributes of a given PowerScale Storage""" try: config = (self.cluster_api.get_cluster_config()).to_dict() ips = self.cluster_api.get_cluster_external_ips() external_ip_str = ','.join(ips) external_ips = {"External IPs": external_ip_str} logon_msg = (self.cluster_api.get_cluster_identity()).to_dict() contact_info = (self.cluster_api.get_cluster_owner()).to_dict() cluster_version = (self.cluster_api.get_cluster_version())\ .to_dict() attribute = { "Config": config, "Contact_Info": contact_info, "External_IP": external_ips, "Logon_msg": logon_msg, "Cluster_Version": cluster_version } LOG.info("Got Attributes of PowerScale cluster %s", self.module.params['onefs_host']) return attribute except Exception as e: error_msg = ( 'Get Attributes List for PowerScale cluster: {0} failed' ' with error: {1}'.format(self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def create_network_rule(self, groupnet, subnet, pool, rule_details): """ Create a network rule """ name = rule_details['name'] try: create_params = utils.isi_sdk.PoolsPoolRule(**rule_details) self.network_api_instance.create_pools_pool_rule(pools_pool_rule=create_params, groupnet=groupnet, subnet=subnet, pool=pool) except ValueError as e: # On successful creation of network provisioning rule # the isi_sdk raises an exception # when trying to extract the id from an empty response. # Adding except clause to suppress this exception # as a workaround. if e.args[0] != "Invalid value for `id`, must not be `None`": raise e except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Unable to create network rule %s. ' \ 'failed with error: %s' % (name, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_synciq_performance_rules(self): """Get the list of SyncIQ performance rules of a given PowerScale Storage""" try: synciq_performance_rule_list = [] synciq_performance_rule_details = ( self.synciq_api.list_sync_rules()).to_dict() for rule in synciq_performance_rule_details['rules']: synciq_performance_rule_dict = { "id": rule['id'], "schedule": rule['schedule'], "enabled": rule['enabled'], "type": rule['type'], "limit": get_sync_rule_limit_unit(rule['limit'], rule['type']) } synciq_performance_rule_list.append( synciq_performance_rule_dict) return synciq_performance_rule_list except Exception as e: error_msg = ( 'Get SyncIQ performance rules list for PowerScale cluster: %s failed with' 'error: %s' % (self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def get_syniq_policies_list(self): """Get the list of SyncIQ policies of a given PowerScale Storage""" try: policies_list = [] policies_details = (self.synciq_api.list_sync_policies()).to_dict() policies = policies_details['policies'] if policies: for policy in policies: policies_list.append({ "name": policy['name'], "id": policy['id'], "source_root_path": policy['source_root_path'], "target_path": policy['target_path'], "action": policy['action'], "schedule": policy['schedule'], "enabled": policy['enabled'] }) return policies_list except Exception as e: error_msg = ( 'Get list of SyncIQ Policies for PowerScale: %s failed with' 'error: %s' % (self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def get_network_pools(self, access_zone, include_all_access_zones): """Get the list of network pools of a given PowerScale Storage""" try: network_pool_list = [] if include_all_access_zones: network_pool_details = ( self.network_api.get_network_pools()).to_dict() else: network_pool_details = (self.network_api.get_network_pools( access_zone=access_zone)).to_dict() pools = network_pool_details['pools'] if pools: for pool in pools: network_pool_list.append({ "id": pool["id"], "name": pool["name"] }) return network_pool_list except Exception as e: error_msg = ( 'Getting list of network pools for PowerScale: %s failed with ' 'error: %s' % (self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def get_clients_list(self): """Get the list of active clients of a given PowerScale Storage""" try: clients_list = [] clients_details = ( self.statistics_api.get_summary_client()).to_dict() LOG.info('Got active clients from PowerScale cluster %s', self.module.params['onefs_host']) clients = clients_details['client'] if clients: for client in clients: clients_list.append({ "local_address": client['local_addr'], "local_name": client['local_name'], "remote_address": client['remote_addr'], "remote_name": client['remote_name'], "node": client['node'], "protocol": client['protocol'] }) return clients_list except Exception as e: error_msg = ( 'Get active clients list for PowerScale cluster: {0} failed with' 'error: {1}'.format(self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def get_synciq_policy_display_attributes(self, policy_obj): """ Display the SyncIQ policy attributes :policy_obj: Policy object :return: dict with SyncIQ policy details """ try: policy_details = policy_obj.to_dict() if 'target_certificate_id' in policy_details: policy_details['target_certificate_name'] = \ self.get_target_cert_id_name(cert_id=policy_details['target_certificate_id']) if policy_details['job_delay'] is not None: policy_details['job_delay'] = utils.get_time_with_unit( policy_details['job_delay']) if policy_details['target_snapshot_expiration'] is not None: policy_details['target_snapshot_expiration'] = \ utils.get_time_with_unit(policy_details['target_snapshot_expiration']) if policy_details['rpo_alert'] is not None: policy_details['rpo_alert'] = \ utils.get_time_with_unit(policy_details['rpo_alert']) return policy_details except Exception as e: error_msg = utils.determine_error(error_obj=e) errormsg = "Display details of SyncIQ policy %s failed with " \ "error %s" % (policy_obj.name, str(error_msg)) LOG.error(errormsg) self.module.fail_json(msg=errormsg)
def get_policy_jobs(self, policy_id): """ Get the list of jobs on the SyncIQ policy. :param policy_id: Specifies the id or name of the SyncIQ policy :return: returns details of the jobs on the policy else returns None. """ try: jobs_list = [] api_response = self.api_instance.list_sync_jobs().jobs jobs = [job for job in api_response if job.id == policy_id] for job in jobs: jobs_list.append({ "id": job.id, "state": job.state, "action": job.action }) return jobs_list except Exception as e: error_message = 'Get jobs on SyncIQ policy %s failed with ' \ 'error: %s' % (policy_id, utils.determine_error (error_obj=e)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def remove_auth_providers_to_access_zone(self, name, auth_providers, existing_auth_providers): """ Remove auth providers from access zone """ try: updated_auth_providers_list = existing_auth_providers remove_auth_providers_required = False provider_summary = self.api_auth.get_providers_summary() all_providers = provider_summary.provider_instances for i in range(len(auth_providers)): provider = [ provider.id for provider in all_providers if provider.name == auth_providers[i]['provider_name'] and provider.type == auth_providers[i]['provider_type'] ] if not provider: error_message = 'Provider: {0} of type: {1}' \ ' does not exist'.format(auth_providers[i]['provider_name'], auth_providers[i]['provider_type']) LOG.error(error_message) self.module.fail_json(msg=error_message) if provider[0] in updated_auth_providers_list: remove_auth_providers_required = True updated_auth_providers_list.remove(provider[0]) if not remove_auth_providers_required: return False update_zone = utils.isi_sdk.Zone( auth_providers=updated_auth_providers_list) self.api_instance.update_zone(zone=update_zone, zone_id=name) return True except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Remove auth providers to access zone {0} ' \ 'failed with error: {1}'.format(name, error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message)
def is_smb_modification_required(self, smb_playbook, access_zone_details): """ Check if default smb settings of access zone needs to be modified """ # Convert octal parameters to decimal for comparison try: if 'directory_create_mask' in smb_playbook and \ smb_playbook['directory_create_mask'] is not None: smb_playbook['directory_create_mask'] = int( smb_playbook['directory_create_mask'], 8) if 'directory_create_mode' in smb_playbook and \ smb_playbook['directory_create_mode'] is not None: smb_playbook['directory_create_mode'] = int( smb_playbook['directory_create_mode'], 8) if 'file_create_mask' in smb_playbook and \ smb_playbook['file_create_mask'] is not None: smb_playbook['file_create_mask'] = int( smb_playbook['file_create_mask'], 8) if 'file_create_mode' in smb_playbook and \ smb_playbook['file_create_mode'] is not None: smb_playbook['file_create_mode'] = int( smb_playbook['file_create_mode'], 8) except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Conversion from octal to decimal failed with ' \ 'error: {0}'.format(error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message) for key in smb_playbook.keys(): if smb_playbook[key] != access_zone_details['smb_settings'][key]: LOG.info("First Key Modification %s", key) return True return False
def create_synciq_job(self, policy_id, job_params): """ Create a job on SyncIQ policy. :policy_id: name or id of the policy on which job should be created :job_params: Dictionary of parameters for creating a job :return: True if job creation is successful """ try: if job_params: sync_job_params = {} sync_job_keys = [ 'action', 'source_snapshot', 'workers_per_node' ] sync_job_params['id'] = policy_id for key in sync_job_keys: if key == 'action' and job_params[key] == 'run': continue sync_job_params[key] = job_params[key] sync_job = utils.isi_sdk.SyncJobCreateParams(**sync_job_params) if job_params['wait_for_completion']: self.api_instance.create_sync_job(sync_job) else: self.api_instance.create_sync_job(sync_job, async_req=True) return True except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Failed to create job on SyncIQ policy with ' \ 'error : %s' % str(error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_sync_rule(self, sync_rule_id=None, sync_rule_dict=None): """ Get SyncIQ performance rule details. If multiple instances are found for same performance rule configuration, error is thrown. :param sync_rule_id: ID of the performance rule :param sync_rule_dict: Dictionary of details of a performance rule :return: Dictionary of performance rule details if exists else none """ duplicate_rule = [] sync_rule_obj = None try: if sync_rule_id: sync_rule_obj = self.api_instance.get_sync_rule(sync_rule_id=sync_rule_id).rules[0] sync_rule_obj = sync_rule_obj.to_dict() else: sync_rule_list = self.api_instance.list_sync_rules().rules for rule in sync_rule_list: rule = rule.to_dict() if all(rule.get(key, None) == val for key, val in sync_rule_dict.items()) \ and rule['schedule'] == sync_rule_dict['schedule']: duplicate_rule.append(rule) if len(duplicate_rule) > 1: self.module.fail_json("Operation is not successful as " "more than one instance of " "SyncIQ performance rule is present with same configuration") elif len(duplicate_rule) == 1: sync_rule_obj = duplicate_rule[0] return sync_rule_obj except utils.ApiException as e: if str(e.status) == '404': error_message = " Sync rule: %s not found." % sync_rule_id LOG.info(error_message) return None else: error_msg = utils.determine_error(error_obj=e) error_message = 'Failed to get SyncIQ rule with ' \ 'error : %s' % str(error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Failed to get SyncIQ rule with ' \ 'error : %s' % str(error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message)
def create(self, ldap_name, server_uris, server_uri_state, base_dn, ldap_parameters): """ Add an LDAP provider. :param ldap_name: Specifies the LDAP provider name. :param server_uris: Specifies the server URIs. :param server_uri_state: Specifies if server_uris need to be added or removed from the provider. During create the parameter should be specifed as present-in-ldap. :param base_dn: Specifies the root of the tree in which to search identities. :param ldap_parameters: Specify additional parameters to configure LDAP domain. :return: LDAP Id. """ if not base_dn: self.module.fail_json( msg="The parameter base_dn is mandatory while creating" " LDAP provider.") if not server_uris: self.module.fail_json( msg="The parameter server_uris is mandatory while creating" " LDAP provider.") self.validate_input(server_uris) if server_uri_state != 'present-in-ldap': self.module.fail_json( msg="Please specify the server_uri_state as present-in-ldap." " Server_uris is mandatory while creating LDAP prodiver.") ldap_create_params = { 'name': ldap_name, 'server_uris': server_uris, 'base_dn': base_dn } if ldap_parameters: if ldap_parameters['groupnet']: ldap_create_params['groupnet'] = ldap_parameters['groupnet'] if ldap_parameters['bind_dn']: ldap_create_params['bind_dn'] = ldap_parameters['bind_dn'] if ldap_parameters['bind_password']: ldap_create_params['bind_password'] = \ ldap_parameters['bind_password'] ldap_provider_obj = \ utils.isi_sdk.ProvidersLdapItem(**ldap_create_params) try: api_response = self.auth_api_instance.create_providers_ldap_item( providers_ldap_item=ldap_provider_obj) message = "LDAP domain created, %s" % api_response LOG.info(message) return api_response except utils.ApiException as e: error_message = "Add an LDAP provider failed with" + \ utils.determine_error(error_obj=e) LOG.error(error_message) self.module.fail_json(msg=error_message)
def create_access_zone(self, access_zone_params): try: self.api_instance.create_zone(access_zone_params) return True except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Creation of access zone %s ' \ 'failed with error: %s' % (access_zone_params['name'], error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message)
def create_subnet(self, groupnet_name, subnet_name, subnet_params): """ Create a subnet. :param groupnet_name: Specifies the groupnet name. :param subnet_name: Specifies the groupnet name. :param subnet_params: Specifies additional parameters to create a subnet. :return: Subnet Id. """ try: if not subnet_params['netmask']: self.module.fail_json(msg="Please enter a valid netmask.") if not subnet_params['gateway_priority']: self.module.fail_json( msg="Please enter a valid gateway_priority.") subnet_create_params = \ {'name': subnet_name, 'addr_family': 'ipv4', 'gateway_priority': subnet_params['gateway_priority'], 'description': subnet_params['description']} prefixlen = get_prefix_len(subnet_params['netmask']) subnet_create_params['prefixlen'] = prefixlen subnet_params = subnet_params['subnet_params'] if subnet_params: if subnet_params['sc_service_addrs_state'] and \ subnet_params['sc_service_addrs_state'] != 'add': self.module.fail_json( msg="Please specify the sc_service_addrs_state as 'add'" " to create a subnet.") params_to_create = get_subnet_create_params(subnet_params) if params_to_create: subnet_create_params.update(params_to_create) subnet_create_params = \ utils.isi_sdk.GroupnetSubnetCreateParams(**subnet_create_params) api_response = \ self.groupnet_api.create_groupnet_subnet(subnet_create_params, groupnet_name) return api_response except ValueError as e: # On successful creation of subnet the isi_sdk raises an exception # when trying to extract the id from an empty response. # Adding except clause to suppress this exception # as a workaround. if e.args[0] != "Invalid value for `id`, must not be `None`": raise e except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Creating subnet %s ' \ 'failed with error: %s' % (subnet_name, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def create(self, domain, instance, ads_user, ads_password, ads_parameters): """ Add an Active Directory provider. :param domain: Specifies the Active Directory provider name. :param instance: Specifies Active Directory provider instance. :param ads_user: Specifies the user name that has permission to join a machine to the given domain. :param ads_password: Specifies the password used during domain join. :param ads_parameters: Specify additional parameters to configure ADS domain. :return: ADS Id. """ if not domain: self.module.fail_json(msg="The parameter domain_name is mandatory " "while creating ADS provider") if not ads_user: self.module.fail_json(msg="The parameter ads_user is mandatory " "while creating ADS provider") if not ads_password: self.module.fail_json(msg="The parameter ads_password is mandatory " "while creating ADS provider") self.validate_domain(domain) ads_create_params = { 'name': domain, 'user': ads_user, 'password': ads_password } if instance: ads_create_params['instance'] = instance if ads_parameters: if ads_parameters['groupnet']: ads_create_params['groupnet'] = ads_parameters['groupnet'] if ads_parameters['home_directory_template']: ads_create_params['home_directory_template'] = \ ads_parameters['home_directory_template'] if ads_parameters['login_shell']: ads_create_params['login_shell'] = \ ads_parameters['login_shell'] ads_provider_obj = utils.isi_sdk.ProvidersAdsItem(**ads_create_params) try: api_response = self.auth_api_instance.create_providers_ads_item( providers_ads_item=ads_provider_obj) message = "ADS domain created, %s" % api_response LOG.info(message) return api_response except utils.ApiException as e: error_message = "Add an Active Directory provider failed with" + \ utils.determine_error(error_obj=e) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_details(self, name): """ Get access zone details""" try: nfs_settings = {} api_response = self.api_instance.get_zone(name).to_dict() nfs_export_settings = self.api_protocol.get_nfs_settings_export( zone=name).to_dict() nfs_export_settings['export_settings'] = nfs_export_settings[ 'settings'] del nfs_export_settings['settings'] nfs_zone_settings = self.api_protocol.get_nfs_settings_zone( zone=name).to_dict() nfs_zone_settings['zone_settings'] = nfs_zone_settings['settings'] del nfs_zone_settings['settings'] nfs_settings['nfs_settings'] = nfs_export_settings nfs_settings['nfs_settings'].update(nfs_zone_settings) api_response.update(nfs_settings) smb_settings = self.api_protocol.get_smb_settings_share( zone=name).to_dict() smb_settings['settings']['directory_create_mask(octal)'] = \ "{0:o}".format(smb_settings['settings'] ['directory_create_mask']) smb_settings['settings']['directory_create_mode(octal)'] = \ "{0:o}".format(smb_settings['settings'] ['directory_create_mode']) smb_settings['settings']['file_create_mask(octal)'] = \ "{0:o}".format(smb_settings['settings'] ['file_create_mask']) smb_settings['settings']['file_create_mode(octal)'] = \ "{0:o}".format(smb_settings['settings'] ['file_create_mode']) smb_settings['smb_settings'] = smb_settings['settings'] del smb_settings['settings'] api_response.update(smb_settings) return api_response except utils.ApiException as e: if str(e.status) == '404': error_message = "Access zone {0} details are not found".\ format(name) LOG.info(error_message) return None else: error_msg = utils.determine_error(error_obj=e) error_message = 'Get details of access zone {0} failed with ' \ 'error: {1}'.format(name, error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message) except Exception as e: error_message = 'Get details of access zone {0} failed with ' \ 'error: {1}'.format(name, str(e)) LOG.error(error_message) self.module.fail_json(msg=error_message)
def smb_modify(self, name, smb): """ Modify smb settings of access zone """ try: self.api_protocol.update_smb_settings_share(smb, zone=name) LOG.info("Modification Successful") return True except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Modify SMB share settings of access zone {0} ' \ 'failed with error: {1}'.format(name, error_msg) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_node_info(self, node_id): """get the specific cluster node information from PowerScale storage""" try: node_info = (self.cluster_api.get_cluster_node(node_id)).to_dict() LOG.info('Got node information from PowerScale cluster %s', self.module.params['onefs_host']) return node_info except Exception as e: error_msg = ( 'get node info for PowerScale cluster: {0} failed with' 'error: {1} '.format(self.module.params['onefs_host'], utils.determine_error(error_obj=e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def get_nodes_list(self): """Get the list of nodes of a given PowerScale Storage""" try: nodes_list = (self.cluster_api.get_cluster_nodes()).to_dict() LOG.info('Got Nodes from PowerScale cluster %s', self.module.params['onefs_host']) return nodes_list except Exception as e: error_msg = ( 'Get Nodes List for PowerScale cluster: {0} failed with' 'error: {1}'.format(self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def get_auth_providers_summary(self): """Get Auth providers summary""" try: providers_summary_api_response = \ self.auth_api_instance.get_providers_summary() providers_summary = \ providers_summary_api_response.provider_instances return providers_summary except utils.ApiException as e: error_message = "Get auth providers summary failed with" + \ utils.determine_error(error_obj=e) LOG.error(error_message) self.module.fail_json(msg=error_message)
def get_access_zones_list(self): """Get the list of access_zones of a given PowerScale Storage""" try: access_zones_list = (self.zone_api.list_zones()).to_dict() LOG.info("Got Access zones from PowerScale cluster %s", self.module.params['onefs_host']) return access_zones_list except Exception as e: error_msg = ( 'Get Access zone List for PowerScale cluster: {0} failed' 'with error: {1}'.format(self.module.params['onefs_host'], utils.determine_error(e))) LOG.error(error_msg) self.module.fail_json(msg=error_msg)
def delete_groupnet(self, groupnet_name): """ Delete a groupnet. :param groupnet_name: Specifies the groupnet name. :return: True if the operation is successful. """ try: self.network_api.delete_network_groupnet(groupnet_name) except Exception as e: error_msg = utils.determine_error(error_obj=e) error_message = 'Deleting groupnet %s ' \ 'failed with error: %s' % (groupnet_name, str(error_msg)) LOG.error(error_message) self.module.fail_json(msg=error_message)