def create_tpg(self, ip): try: gateway_name = self._get_gateway_name(ip) tpg = self.get_tpg_by_gateway_name(gateway_name) if not tpg: tpg = TPG(self.target) # Use initiator name based ACL by default. tpg.set_attribute('authentication', '0') self.logger.debug("(Gateway.create_tpg) Added tpg for portal " "ip {}".format(ip)) if ip in self.active_portal_ips: target_config = self.config.config['targets'][self.iqn] auth_config = target_config['auth'] config_chap = CHAP(auth_config['username'], auth_config['password'], auth_config['password_encryption_enabled']) if config_chap.error: self.error = True self.error_msg = config_chap.error_msg return config_chap_mutual = CHAP(auth_config['mutual_username'], auth_config['mutual_password'], auth_config['mutual_password_encryption_enabled']) if config_chap_mutual.error: self.error = True self.error_msg = config_chap_mutual.error_msg return self.update_auth(tpg, config_chap.user, config_chap.password, config_chap_mutual.user, config_chap_mutual.password) if self.enable_portal: NetworkPortal(tpg, normalize_ip_literal(ip)) tpg.enable = True self.logger.debug("(Gateway.create_tpg) Added tpg for " "portal ip {} is enabled".format(ip)) else: NetworkPortal(tpg, normalize_ip_literal(ip)) # disable the tpg on this host tpg.enable = False # by disabling tpg_enabled_sendtargets, discovery to just one # node will return all portals (default is 1) tpg.set_attribute('tpg_enabled_sendtargets', '0') self.logger.debug("(Gateway.create_tpg) Added tpg for " "portal ip {} as disabled".format(ip)) self.tpg_list.append(tpg) self.tpg_tag_by_gateway_name[gateway_name] = tpg.tag except RTSLibError as err: self.error_msg = err self.error = True else: self.changes_made = True self.logger.info("(Gateway.create_tpg) created TPG '{}' " "for target iqn '{}'".format(tpg.tag, self.iqn))
def enable_active_tpg(self, config): """ Add the relevant ip to the active/enabled tpg within the target and bind the tpg's luns to an ALUA group. :return: None """ for tpg in self.tpg_list: if tpg._get_enable(): for lun in tpg.luns: try: self.bind_alua_group_to_lun( config, lun, tpg_ip_address=self.active_portal_ip) except CephiSCSIInval as err: self.error = True self.error_msg = err return try: NetworkPortal(tpg, normalize_ip_literal(self.active_portal_ip)) except RTSLibError as e: self.error = True self.error_msg = e else: break
def create_tpg(self, ip): try: tpg = None gateway_name = self._get_gateway_name(ip) tpg_tag = self.tpg_tag_by_gateway_name.get(gateway_name) if tpg_tag: for tpg_item in self.tpg_list: if tpg_item.tag == tpg_tag: tpg = tpg_item if not tpg: tpg = TPG(self.target) # Use initiator name based ACL by default. tpg.set_attribute('authentication', '0') self.logger.debug("(Gateway.create_tpg) Added tpg for portal " "ip {}".format(ip)) if ip in self.active_portal_ips: if self.enable_portal: NetworkPortal(tpg, normalize_ip_literal(ip)) tpg.enable = True self.logger.debug("(Gateway.create_tpg) Added tpg for " "portal ip {} is enabled".format(ip)) else: NetworkPortal(tpg, normalize_ip_literal(ip)) # disable the tpg on this host tpg.enable = False # by disabling tpg_enabled_sendtargets, discovery to just one # node will return all portals (default is 1) tpg.set_attribute('tpg_enabled_sendtargets', '0') self.logger.debug("(Gateway.create_tpg) Added tpg for " "portal ip {} as disabled".format(ip)) self.tpg_list.append(tpg) self.tpg_tag_by_gateway_name[gateway_name] = tpg.tag except RTSLibError as err: self.error_msg = err self.error = True else: self.changes_made = True self.logger.info("(Gateway.create_tpg) created TPG '{}' " "for target iqn '{}'".format(tpg.tag, self.iqn))