def is_updatable_extra_capability(self, capability): reservations = db_utils.get_reservations_by_host_id( capability['computehost_id'], datetime.datetime.utcnow(), datetime.date.max) for r in reservations: plugin_reservation = db_utils.get_plugin_reservation( r['resource_type'], r['resource_id']) requirements_queries = plugins_utils.convert_requirements( plugin_reservation['resource_properties']) # TODO(masahito): If all the reservations using the # extra_capability can be re-allocated it's okay to update # the extra_capability. for requirement in requirements_queries: # A requirement is of the form "key op value" as string if requirement.split(" ")[0] == capability['capability_name']: return False return True
def filter_hosts_by_reservation(self, hosts, start_date, end_date, excludes): free = [] non_free = [] for host in hosts: reservations = db_utils.get_reservations_by_host_id(host['id'], start_date, end_date) if excludes: reservations = [r for r in reservations if r['id'] not in excludes] if reservations == []: free.append({'host': host, 'reservations': None}) elif not [r for r in reservations if r['resource_type'] == oshosts.RESOURCE_TYPE]: non_free.append({'host': host, 'reservations': reservations}) return free, non_free