def get_provider(self, cloud_prop):
        """
        Return a suitable cloud Provider object for the given cloud properties
        input and specifically the 'provider' type attribute.
        """
        provider_id = cloud_prop.get("provider")
        if not provider_id:
            raise errors.CloudError("cloud 'provider' property not set")

        try:
            provider_class = PROVIDERS[provider_id]
        except __HOLE__:
            raise errors.CloudError("unknown cloud provider %r" % (provider_id,))

        key = provider_class.get_provider_key(cloud_prop)
        cached = self.providers.get(key)
        if not cached:
            cached = provider_class(cloud_prop)
            self.providers[key] = cached
            return cached

        return cached
dataset/ETHPy150Open ohmu/poni/poni/cloud.py/Sky.get_provider