<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_node_from_appliance(self, appliance_id, x=0, y=0, compute_id=None):
 """ Create a node from an appliance """

        try:
            template = self.controller.appliances[appliance_id].data
        except KeyError:
            msg = "Appliance {} doesn't exist".format(appliance_id)
            log.error(msg)
            raise aiohttp.web.HTTPNotFound(text=msg)
        template["x"] = x
        template["y"] = y
        node_type = template.pop("node_type")
        compute = self.controller.get_compute(template.pop("server", compute_id))
        name = template.pop("name")
        default_name_format = template.pop("default_name_format", "{name}-{0}")
        name = default_name_format.replace("{name}", name)
        node_id = str(uuid.uuid4())
        node = yield from self.add_node(compute, name, node_id, node_type=node_type, **template)
        return node