def defaults_refresh(self): # Default cluster name / uuid values if self.model.cluster_name is None and self.model.cluster_uuid is None: self.model.cluster_name = "ceph" if self.model.cluster_name is not None and self.model.cluster_uuid is None: self.model.cluster_uuid = utils._get_cluster_uuid_from_name(self.model.cluster_name) if self.model.cluster_name is None and self.model.cluster_uuid is not None: self.model.cluster_name = utils._get_cluster_name_from_uuid(self.model.cluster_uuid)
def defaults_refresh(self): # Default cluster name / uuid values if self.model.cluster_name is None and self.model.cluster_uuid is None: log.info("Defaulting cluster name to 'ceph'") self.model.cluster_name = "ceph" if self.model.cluster_name is not None and self.model.cluster_uuid is None: self.model.cluster_uuid = utils._get_cluster_uuid_from_name(self.model.cluster_name) log.info("From cluster name '%s' got cluster uuid '%s'" % (self.model.cluster_name, self.model.cluster_uuid)) if self.model.cluster_name is None and self.model.cluster_uuid is not None: self.model.cluster_name = utils._get_cluster_name_from_uuid(self.model.cluster_uuid) log.info("From cluster uuid '%s' got cluster name '%s'" % (self.model.cluster_uuid, self.model.cluster_name))
def defaults_refresh(self): # Default cluster name / uuid values if self.model.cluster_name is None and self.model.cluster_uuid is None: log.info("Defaulting cluster name to 'ceph'") self.model.cluster_name = "ceph" if self.model.cluster_name is not None and self.model.cluster_uuid is None: self.model.cluster_uuid = utils._get_cluster_uuid_from_name( self.model.cluster_name) log.info("From cluster name '%s' got cluster uuid '%s'" % (self.model.cluster_name, self.model.cluster_uuid)) if self.model.cluster_name is None and self.model.cluster_uuid is not None: self.model.cluster_name = utils._get_cluster_name_from_uuid( self.model.cluster_uuid) log.info("From cluster uuid '%s' got cluster name '%s'" % (self.model.cluster_uuid, self.model.cluster_name))
def prepare(self, **kwargs): osd_dev_raw = kwargs.get("osd_dev") journal_dev = kwargs.get("journal_dev") cluster_name = kwargs.get("cluster_name") cluster_uuid = kwargs.get("cluster_uuid") fs_type = kwargs.get("osd_fs_type") osd_uuid = kwargs.get("osd_uuid") journal_uuid = kwargs.get("journal_uuid") # Default cluster name / uuid values if cluster_name is None and cluster_uuid is None: cluster_name = "ceph" if cluster_name is not None and cluster_uuid is None: cluster_uuid = utils._get_cluster_uuid_from_name(cluster_name) if cluster_name is None and cluster_uuid is not None: cluster_name = utils._get_cluster_name_from_uuid(cluster_name) fs_type = kwargs.get("fs_type","xfs") # Check required variables are set if osd_dev_raw is None: raise Error("osd_dev not specified") # Check boot strap key exists bootstrap_path_osd = keyring._get_path_keyring_osd(cluster_name) if not os.path.isfile(bootstrap_path_osd): raise Error(bootstrap_path_osd) if not os.path.isdir(constants._path_ceph_lib_osd): log.info("mkdir %s") os.makedirs(constants._path_ceph_lib_osd) # normalise paths osd_dev = os.path.realpath(osd_dev_raw) log.debug("Transfromed from '%s' to '%s'" % (osd_dev_raw, osd_dev)) # get existing state and see if action needed u = mdl_updater.model_updater(self.model) u.partition_table_refresh() # Validate the osd_uuid and journal_uuid dont already exist osd_list_existing = self.model.discovered_osd.get(cluster_uuid) if osd_list_existing is not None: for osd_existing in osd_list_existing: if osd_uuid is not None: osd_existing_fsid = osd_existing.get("fsid") if osd_existing_fsid == osd_uuid: log.debug("osd_uuid already exists:%s" % (osd_uuid)) return True if journal_uuid is not None: journal_existing_uuid = osd_existing.get("journal_uuid") if journal_existing_uuid == journal_uuid: log.debug("journal_uuid already exists:%s" % (journal_uuid)) return True if self.is_partition(osd_dev): if osd_dev in self.model.partitions_journal: return True partion_details = self._get_part_details(osd_dev) osd_mountpoint = partion_details.get("MOUNTPOINT") if osd_mountpoint is not None: return True if journal_dev is None: # We could try and default journal_dev if a journel disk is found. raise Error("Journel device must be specified") self._prepare_check_partition_type_data(osd_dev) self._prepare_check_partition_type_journel(journal_dev) else: # If partions exist on osd_dev disk assume its used block_details_osd = self.model.lsblk.get(osd_dev) if block_details_osd is None: raise Error("Not a block device") part_table = block_details_osd.get("PARTITION") if part_table is not None: if len(part_table.keys()) > 0: return True if not constants._path_ceph_disk: raise Error("Error 'ceph-disk' command not find") arguments = [ constants._path_ceph_disk, '-v', 'prepare', '--fs-type', fs_type ] if osd_dev is not None: arguments.append("--data-dev") if journal_dev is not None: arguments.append("--journal-dev") if cluster_name is not None: arguments.append("--cluster") arguments.append(cluster_name) if cluster_uuid is not None: arguments.append("--cluster-uuid") arguments.append(cluster_uuid) if osd_uuid is not None: arguments.append("--osd-uuid") arguments.append(osd_uuid) if journal_uuid is not None: arguments.append("--journal-uuid") arguments.append(journal_uuid) if osd_dev is not None: arguments.append(osd_dev) if journal_dev is not None: arguments.append(journal_dev) output = utils.execute_local_command(arguments) if output["retcode"] != 0: raise Error("Failed executing '%s' Error rc=%s, stdout=%s stderr=%s" % ( " ".join(arguments), output["retcode"], output["stdout"], output["stderr"]) ) return True