Esempio n. 1
0
 def _get_vmfs_datastore(self, params):
     """Get the VMFS datastore from the given system_id and id."""
     node = self._get_node_or_permission_error(
         params, permission=self._meta.edit_permission)
     vmfs_datastore_id = params.get("vmfs_datastore_id")
     try:
         vbd = node.virtualblockdevice_set.get(id=vmfs_datastore_id)
     except ObjectDoesNotExist:
         raise HandlerDoesNotExistError(vmfs_datastore_id)
     if not vbd.filesystem_group:
         raise HandlerDoesNotExistError(vmfs_datastore_id)
     return vbd.filesystem_group
Esempio n. 2
0
 def get_script(self, params):
     id = params.get("id")
     revision = params.get("revision")
     script = self.get_object(params)
     if not script:
         raise HandlerDoesNotExistError(
             f"Script with id({id}) does not exist!")
     if revision:
         for rev in script.script.previous_versions():
             if rev.id == revision:
                 return rev.data
         raise HandlerDoesNotExistError(
             f"Unable to find revision {revision} for {script.name}.")
     else:
         return script.script.data
Esempio n. 3
0
 def test_on_listen_returns_None_if_unknown_action(self):
     handler = self.make_nodes_handler()
     mock_listen = self.patch(handler, "listen")
     mock_listen.side_effect = HandlerDoesNotExistError()
     self.assertIsNone(
         handler.on_listen(sentinel.channel, factory.make_name("action"),
                           sentinel.pk))
Esempio n. 4
0
 def get_object(self, params):
     """Only allow getting keys owned by the user."""
     obj = super(SSHKeyHandler, self).get_object(params)
     if obj.user != self.user:
         raise HandlerDoesNotExistError(params[self._meta.pk])
     else:
         return obj
Esempio n. 5
0
 def update(self, params):
     """Update a config value."""
     if not self.user.is_superuser:
         raise HandlerPermissionError()
     if "name" not in params:
         raise HandlerPKError("Missing name in params")
     if "value" not in params:
         raise HandlerValidationError("Missing value in params")
     name = params["name"]
     value = params["value"]
     try:
         form = get_config_form(name, {name: value})
     except ValidationError:
         raise HandlerDoesNotExistError(name)
     if form.is_valid():
         try:
             request = HttpRequest()
             request.user = self.user
             form.save(ENDPOINT.UI, request)
         except ValidationError as e:
             self._fix_validation_error(name, e.error_dict)
             raise HandlerValidationError(e.error_dict)
         return self._include_choice(
             {"name": name, "value": Config.objects.get_config(name)}
         )
     else:
         self._fix_validation_error(name, form.errors)
         raise HandlerValidationError(form.errors)
Esempio n. 6
0
 def get_object(self, params, permission=None):
     """Only allow getting keys owned by the user."""
     obj = super().get_object(params, permission=permission)
     if obj.user != self.user:
         raise HandlerDoesNotExistError(params[self._meta.pk])
     else:
         return obj
Esempio n. 7
0
 def test_on_listen_returns_None_if_obj_no_longer_exists(self):
     user = factory.make_User()
     handler = EventHandler(user, {})
     mock_listen = self.patch(handler, "listen")
     mock_listen.return_value = HandlerDoesNotExistError()
     self.assertIsNone(
         handler.on_listen(sentinel.channel, sentinel.action,
                           random.randint(1, 1000)))
Esempio n. 8
0
 def get_object(self, params):
     """Get object by using the `pk` in `params`."""
     obj = super(NodeHandler, self).get_object(params)
     if self.user.is_superuser:
         return obj.as_self()
     if obj.owner is None or obj.owner == self.user:
         return obj.as_self()
     raise HandlerDoesNotExistError(params[self._meta.pk])
Esempio n. 9
0
 def get(self, params):
     """Get a config value."""
     if "name" not in params:
         raise HandlerPKError("Missing name in params")
     name = params["name"]
     if name not in get_config_keys(self.user):
         raise HandlerDoesNotExistError(name)
     self.cache["loaded_pks"].update({name})
     return self.dehydrate_configs([name])[0]
Esempio n. 10
0
 def test_on_listen_calls_listen(self):
     handler = self.make_nodes_handler()
     pk = factory.make_name("system_id")
     mock_listen = self.patch(handler, "listen")
     mock_listen.side_effect = HandlerDoesNotExistError()
     handler.on_listen(sentinel.channel, sentinel.action, pk)
     self.assertThat(
         mock_listen,
         MockCalledOnceWith(sentinel.channel, sentinel.action, pk))
Esempio n. 11
0
 def get_node(self, params):
     """Get node object from params"""
     if "node_id" not in params:
         raise HandlerPKError("Missing node_id in params")
     node_id = params["node_id"]
     try:
         node = Node.objects.get(id=node_id)
     except Node.DoesNotExist:
         raise HandlerDoesNotExistError(node_id)
     return node
Esempio n. 12
0
 def get(self, params):
     """Get a config value."""
     if "name" not in params:
         raise HandlerPKError("Missing name in params")
     name = params["name"]
     if name not in CONFIG_ITEMS:
         raise HandlerDoesNotExistError(name)
     self.cache["loaded_pks"].update({name})
     return self._include_choice(
         {"name": name, "value": Config.objects.get_config(name)}
     )
Esempio n. 13
0
File: node.py Progetto: laoyin/maas
    def get_object(self, params):
        """Get object by using the `pk` in `params`."""
        obj = super(NodeHandler, self).get_object(params)

        can_access_node = (self.user.is_superuser or obj.owner == self.user
                           or (obj.owner is None and obj.pool is not None
                               and ResourcePool.objects.user_can_access_pool(
                                   self.user, obj.pool)))
        if can_access_node:
            return obj.as_self()
        raise HandlerDoesNotExistError(params[self._meta.pk])
Esempio n. 14
0
 def get_object(self, params):
     """Get object by using the `pk` in `params`."""
     obj = super(UserHandler, self).get_object(params)
     if self.user.is_superuser:
         # Super user can get any user.
         return obj
     elif obj == self.user:
         # Standard user can only get self.
         return obj
     else:
         raise HandlerDoesNotExistError(params[self._meta.pk])
Esempio n. 15
0
    def get_object(self, params):
        """Get object by using the `pk` in `params`."""
        obj = super(NodeHandler, self).get_object(params)
        # Get the object and update update the script_result_cache.
        self._refresh_script_result_cache(obj.get_latest_script_results)

        if self.user.is_superuser:
            return obj.as_self()
        if obj.owner is None or obj.owner == self.user:
            return obj.as_self()
        raise HandlerDoesNotExistError(params[self._meta.pk])
Esempio n. 16
0
    def get_object(self, params):
        """Get object by using the `pk` in `params`."""
        obj = super(NodeHandler, self).get_object(params)
        # Get the object and update update the script_result_cache.
        self._refresh_script_result_cache(obj.get_latest_script_results)

        can_access_node = (self.user.is_superuser or obj.owner == self.user
                           or (obj.owner is None and obj.pool is not None
                               and ResourcePool.objects.user_can_access_pool(
                                   self.user, obj.pool)))
        if can_access_node:
            return obj.as_self()
        raise HandlerDoesNotExistError(params[self._meta.pk])
Esempio n. 17
0
    def get_node(self, params):
        """Get node object from params."""
        if "system_id" not in params:
            raise HandlerPKError("Missing system_id in params")
        system_id = params["system_id"]

        if system_id in self.cache["system_ids"]:
            return self.cache["system_ids"][system_id]

        try:
            node = Node.objects.get(system_id=params["system_id"])
        except Node.DoesNotExist:
            raise HandlerDoesNotExistError(params["system_id"])

        self.cache["system_ids"][system_id] = node
        return node
Esempio n. 18
0
 def get_object(self, params):
     """Get object by using the `pk` in `params`."""
     obj = super(DeviceHandler, self).get_object(params)
     if reload_object(self.user).is_superuser or obj.owner == self.user:
         return obj
     raise HandlerDoesNotExistError(params[self._meta.pk])