def standalone_from_launchable(cls, launch):
        """
        Given a launchable resource, create a definition of a standalone
        instance, which doesn't depend on or contain references to other
        elements.
        """
        attrs = copy.copy(launch.el_attrs)
        # Remove attributes we overwrite / don't need
        del attrs["Type"]
        if attrs.has_key("DependsOn"):
            del attrs["DependsOn"]
        if attrs["Properties"].has_key("SpotPrice"):
            del attrs["Properties"]["SpotPrice"]
        if attrs["Properties"].has_key("InstanceMonitoring"):
            del attrs["Properties"]["InstanceMonitoring"]
        if attrs["Properties"].has_key("SecurityGroups"):
            del attrs["Properties"]["SecurityGroups"]
        if attrs["Properties"].has_key("InstanceId"):
            raise RuntimeError("Can't make instance from launchable containing InstanceId property")
        inst = EC2Instance(**attrs)
        # TODO: shallow copy?
        inst.iscm = launch.iscm
        return inst
Given a launchable resource, create a definition of a standalone
        instance, which doesn't depend on or contain references to other
        elements.