Esempio n. 1
0
 def __setitem__(self, key, value):
     # NOTE(isethi): Exceptions are raised only for actions update, delete
     # and create, where the user proactively interacts with the properties.
     # A user cannot request to read a specific property, hence reads do
     # raise an exception
     try:
         if self.__getitem__(key) is not None:
             if self.property_rules.check_property_rules(
                     key, 'update', self.context):
                 return dict.__setitem__(self, key, value)
             else:
                 raise exception.ReservedProperty(property=key)
     except KeyError:
         if self.property_rules.check_property_rules(
                 key, 'create', self.context):
             return dict.__setitem__(self, key, value)
         else:
             raise exception.ReservedProperty(property=key)
Esempio n. 2
0
    def __delitem__(self, key):
        if key not in super(ExtraPropertiesProxy, self).keys():
            raise KeyError

        if self.property_rules.check_property_rules(key, 'delete',
                                                    self.context):
            return dict.__delitem__(self, key)
        else:
            raise exception.ReservedProperty(property=key)
Esempio n. 3
0
    def __delitem__(self, key):
        if not super(ExtraPropertiesProxy, self).__getitem__(key):
            raise KeyError

        if self.property_rules.check_property_rules(key, 'delete',
                                                    self.roles):
            return dict.__delitem__(self, key)
        else:
            raise exception.ReservedProperty(property=key)
Esempio n. 4
0
    def new_image(self, **kwargs):
        extra_props = kwargs.pop('extra_properties', {})

        extra_properties = {}
        for key in extra_props.keys():
            if self.property_rules.check_property_rules(
                    key, 'create', self.context):
                extra_properties[key] = extra_props[key]
            else:
                raise exception.ReservedProperty(property=key)
        return super(ProtectedImageFactoryProxy, self).\
            new_image(extra_properties=extra_properties, **kwargs)
Esempio n. 5
0
 def _check_reserved(self, properties):
     if properties is not None:
         for key in self._reserved_properties:
             if key in properties:
                 raise exception.ReservedProperty(property=key)