def translate_etcd_result(etcd_result, model_type): """Translate etcd unicode result to etcd models.""" try: data = json.loads(etcd_result.value) ret = None if model_type == 'container': ret = models.Container(data) elif model_type == 'zun_service': ret = models.ZunService(data) elif model_type == 'image': ret = models.Image(data) elif model_type == 'resource_class': ret = models.ResourceClass(data) elif model_type == 'compute_node': ret = models.ComputeNode(data) elif model_type == 'capsule': ret = models.Capsule(data) elif model_type == 'pcidevice': ret = models.PciDevice(data) elif model_type == 'volume_mapping': ret = models.VolumeMapping(data) elif model_type == 'container_action': ret = models.ContainerAction(data) elif model_type == 'container_action_event': ret = models.ContainerActionEvent(data) else: raise exception.InvalidParameterValue( _('The model_type value: %s is invalid.'), model_type) return ret except (ValueError, TypeError) as e: LOG.error("Error occurred while translating etcd result: %s", six.text_type(e)) raise
def create_container(self, context, container_data): # ensure defaults are present for new containers if not container_data.get('uuid'): container_data['uuid'] = uuidutils.generate_uuid() if container_data.get('name'): self._validate_unique_container_name(context, container_data['name']) container = models.Container(container_data) try: container.save() except Exception: raise return container
def translate_etcd_result(etcd_result, model_type): """Translate etcd unicode result to etcd models.""" try: data = json.loads(etcd_result.value) ret = None if model_type == 'container': ret = models.Container(data) elif model_type == 'zun_service': ret = models.ZunService(data) elif model_type == 'image': ret = models.Image(data) else: raise exception.InvalidParameterValue( _('The model_type value: %s is invalid.'), model_type) return ret except (ValueError, TypeError) as e: LOG.error(_LE("Error occurred while translating etcd result: %s"), six.text_type(e)) raise