Patch for 5.x (Icehouse) based on https://github.com/angdraug/nova/tree /rbd-ephemeral-clone-stable-icehouse
** Patch added: "0001-Use-Ceph-cluster-stats-to-report-disk-info-on-RBD-icehouse.patch" https://bugs.launchpad.net/fuel/+bug/1332660/+attachment/4138381/+files/0001-Use-Ceph-cluster-stats-to-report-disk-info-on-RBD-icehouse.patch ** Also affects: fuel/4.1.x Importance: Undecided Status: New ** Also affects: fuel/5.0.x Importance: Undecided Status: New ** Changed in: fuel/4.1.x Status: New => In Progress ** Changed in: fuel/5.0.x Status: New => In Progress ** Changed in: fuel/4.1.x Importance: Undecided => High ** Changed in: fuel/5.0.x Importance: Undecided => High ** Changed in: fuel/4.1.x Milestone: None => 4.1.2 ** Changed in: fuel/5.0.x Milestone: None => 5.0.1 ** Changed in: fuel Assignee: Dmitry Borodaenko (dborodaenko) => MOS Nova (mos-nova) ** Changed in: fuel/4.1.x Assignee: (unassigned) => MOS Nova (mos-nova) ** Changed in: fuel/5.0.x Assignee: (unassigned) => MOS Nova (mos-nova) ** Also affects: mos Importance: Undecided Status: New ** Changed in: mos Status: New => In Progress ** Changed in: mos Importance: Undecided => High ** Changed in: mos Assignee: (unassigned) => MOS Nova (mos-nova) ** Changed in: mos Milestone: None => 5.1 ** Also affects: mos/5.0.x Importance: Undecided Status: New ** Changed in: mos/5.0.x Status: New => In Progress ** Changed in: mos/5.0.x Importance: Undecided => High ** Changed in: mos/5.0.x Assignee: (unassigned) => MOS Nova (mos-nova) ** Changed in: mos/5.0.x Milestone: None => 5.0.1 -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1332660 Title: Update statistics from computes if RBD ephemeral is used Status in Fuel: OpenStack installer that works: In Progress Status in Fuel for OpenStack 4.1.x series: In Progress Status in Fuel for OpenStack 5.0.x series: In Progress Status in Mirantis OpenStack: In Progress Status in Mirantis OpenStack 5.0.x series: In Progress Status in OpenStack Compute (Nova): In Progress Bug description: If we use RBD as the backend for ephemeral drives, compute nodes still calculate their available disk size looking back to the local disks. This is the path how they do it: * nova/compute/manager.py def update_available_resource(self, context): """See driver.get_available_resource() Periodic process that keeps that the compute host's understanding of resource availability and usage in sync with the underlying hypervisor. :param context: security context """ new_resource_tracker_dict = {} nodenames = set(self.driver.get_available_nodes()) for nodename in nodenames: rt = self._get_resource_tracker(nodename) rt.update_available_resource(context) new_resource_tracker_dict[nodename] = rt .................... def _get_resource_tracker(self, nodename): rt = self._resource_tracker_dict.get(nodename) if not rt: if not self.driver.node_is_available(nodename): raise exception.NovaException( _("%s is not a valid node managed by this " "compute host.") % nodename) rt = resource_tracker.ResourceTracker(self.host, self.driver, nodename) self._resource_tracker_dict[nodename] = rt return rt * nova/compute/resource_tracker.py def update_available_resource(self, context): """Override in-memory calculations of compute node resource usage based on data audited from the hypervisor layer. Add in resource claims in progress to account for operations that have declared a need for resources, but not necessarily retrieved them from the hypervisor layer yet. """ LOG.audit(_("Auditing locally available compute resources")) resources = self.driver.get_available_resource(self.nodename) * nova/virt/libvirt/driver.py def get_local_gb_info(): """Get local storage info of the compute node in GB. :returns: A dict containing: :total: How big the overall usable filesystem is (in gigabytes) :free: How much space is free (in gigabytes) :used: How much space is used (in gigabytes) """ if CONF.libvirt_images_type == 'lvm': info = libvirt_utils.get_volume_group_info( CONF.libvirt_images_volume_group) else: info = libvirt_utils.get_fs_info(CONF.instances_path) for (k, v) in info.iteritems(): info[k] = v / (1024 ** 3) return info It would be nice to have something like "libvirt_utils.get_rbd_info" which could be used in case CONF.libvirt_images_type == 'rbd' To manage notifications about this bug go to: https://bugs.launchpad.net/fuel/+bug/1332660/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : [email protected] Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp

