def serialize_nova_flavor(flavor, updated_at=None): if hasattr(flavor, "to_dict"): serialized = {k: v for k, v in flavor.to_dict().items() if k not in ("links")} serialized["extra_specs"] = flavor.get_keys() serialized[FLAVOR_ACCESS_FIELD] = _get_flavor_access(flavor) else: # This is a versioned flavor notification object serialized = copy.deepcopy(flavor) # Flavorid is a uuid like string. serialized['id'] = serialized['flavorid'] # Extra specs and projects are added by update operation serialized['extra_specs'] = serialized.get('extra_specs') or {} serialized['projects'] = serialized.get('projects') # For consistent with the Flavor API response, we need to remove some # fields, and rename some fields key. for item in FLAVOR_BLACKLISTED_FIELDS: try: serialized.pop(item) except KeyError: pass for key, value in FLAVOR_FIELDS_MAP.items(): try: serialized[value] = serialized.pop(key) except KeyError: pass if not serialized.get('updated_at'): serialized['updated_at'] = updated_at or utils.get_now_str() return serialized
def serialize_network(network, updated_at=None): serialized = copy.deepcopy(network) # TODO(sjmc7): Once subnets are added, look at whether or not to # leave this in dependent on what notifications are received serialized.pop('subnets') # There are no times in network requests, so we'll slap the current # time on for the sake of argument serialized['updated_at'] = updated_at or utils.get_now_str() return serialized
def serialize_nova_flavor(flavor, updated_at=None): serialized = {k: v for k, v in six.iteritems(flavor.to_dict()) if k not in ("links")} serialized["extra_specs"] = flavor.get_keys() serialized[FLAVOR_ACCESS_FIELD] = _get_flavor_access(flavor) if not getattr(flavor, 'updated_at', None): serialized['updated_at'] = updated_at or utils.get_now_str() return serialized
def serialize_nova_flavor(flavor, updated_at=None): serialized = { k: v for k, v in six.iteritems(flavor.to_dict()) if k not in ("links") } serialized["extra_specs"] = flavor.get_keys() serialized[FLAVOR_ACCESS_FIELD] = _get_flavor_access(flavor) if not getattr(flavor, 'updated_at', None): serialized['updated_at'] = updated_at or utils.get_now_str() return serialized
def create(self, event_type, payload, timestamp): server_group = deepcopy(payload) server_group['id'] = server_group.pop('server_group_id') server_group['metadata'] = {} server_group['members'] = [] server_group['updated_at'] = utils.get_now_str() LOG.debug("creating nova server group " "information for %s", server_group['id']) version = self.get_version(server_group, timestamp) self.index_helper.save_document(server_group, version=version) return pipeline.IndexItem(self.index_helper.plugin, event_type, payload, server_group)
def serialize_nova_hypervisor(hypervisor, updated_at=None): serialized = hypervisor.to_dict() # The id for hypervisor is an integer, should be changed to # string. serialized['id'] = str(serialized['id']) serialized['cpu_info'] = json.loads(serialized['cpu_info']) if not getattr(hypervisor, 'updated_at', None): serialized['updated_at'] = updated_at or utils.get_now_str() # TODO(lyj): Remove this once hypervisor notifications supported. for key in ['running_vms', 'vcpus_used', 'memory_mb_used', 'free_ram_mb', 'free_disk_gb', 'local_gb_used', 'current_workload']: if key in serialized: serialized.pop(key) return serialized
def serialize_nova_hypervisor(hypervisor, updated_at=None): serialized = hypervisor.to_dict() # The id for hypervisor is an integer, should be changed to # string. serialized['id'] = str(serialized['id']) serialized['cpu_info'] = json.loads(serialized['cpu_info']) if not getattr(hypervisor, 'updated_at', None): serialized['updated_at'] = updated_at or utils.get_now_str() # TODO(lyj): Remove this once hypervisor notifications supported. for key in [ 'running_vms', 'vcpus_used', 'memory_mb_used', 'free_ram_mb', 'free_disk_gb', 'local_gb_used', 'current_workload' ]: if key in serialized: serialized.pop(key) return serialized
def serialize_nova_hypervisor(hypervisor, updated_at=None): serialized = hypervisor.to_dict() # The id for hypervisor is an integer, should be changed to # string. serialized['id'] = str(serialized['id']) # The 'cpu_info' field of hypervisor has changed from string # to JSON object in microversion 2.28, we should be able to # deal with JSON object here. if not isinstance(serialized['cpu_info'], dict): serialized['cpu_info'] = jsonutils.loads(serialized['cpu_info']) if not getattr(hypervisor, 'updated_at', None): serialized['updated_at'] = updated_at or utils.get_now_str() # TODO(lyj): Remove this once hypervisor notifications supported. for key in ['running_vms', 'vcpus_used', 'memory_mb_used', 'free_ram_mb', 'free_disk_gb', 'local_gb_used', 'current_workload']: if key in serialized: serialized.pop(key) return serialized
def serialize_nova_servergroup(servergroup, updated_at=None): serialized = servergroup.to_dict() if not getattr(servergroup, 'updated_at', None): serialized['updated_at'] = updated_at or utils.get_now_str() return serialized
def serialize_port(port, updated_at=None): serialized = copy.deepcopy(port) serialized['updated_at'] = updated_at or utils.get_now_str() return serialized
def serialize_security_group(sec_group, updated_at=None): serialized = copy.deepcopy(sec_group) if 'updated_at' not in sec_group: serialized['updated_at'] = updated_at or utils.get_now_str() serialized['project_id'] = serialized['tenant_id'] return serialized
def serialize_floatingip(fip, updated_at=None): serialized = copy.deepcopy(fip) if 'updated_at' not in fip: serialized['updated_at'] = updated_at or utils.get_now_str() serialized['project_id'] = serialized['tenant_id'] return serialized
def serialize_router(router, updated_at=None): serialized = copy.deepcopy(router) if 'updated_at' not in router: serialized['updated_at'] = updated_at or utils.get_now_str() serialized['project_id'] = serialized['tenant_id'] return serialized