from solumclient.common import base as solum_base
from solumclient.openstack.common.apiclient import base as apiclient_base
from solumclient.openstack.common import uuidutils


class Pipeline(apiclient_base.Resource):
    def __repr__(self):
        return "<Pipeline %s>" % self._info


class PipelineManager(solum_base.CrudManager, solum_base.FindMixin):
    resource_class = Pipeline
    collection_key = 'pipelines'
    key = 'pipeline'

    def list(self, **kwargs):
        return super(PipelineManager, self).list(base_url="/v1", **kwargs)

    def create(self, **kwargs):
        return super(PipelineManager, self).create(base_url="/v1", **kwargs)

    def get(self, **kwargs):
        return super(PipelineManager, self).get(base_url="/v1", **kwargs)

    def put(self, **kwargs):
        return super(PipelineManager, self).put(base_url="/v1", **kwargs)

    def delete(self, **kwargs):
        return super(PipelineManager, self).delete(base_url="/v1", **kwargs)

    def find(self, **kwargs):
        if 'pipeline_id' in kwargs:
            return super(PipelineManager, self).get(base_url="/v1", **kwargs)
        elif 'name_or_id' in kwargs:
            name_or_uuid = kwargs['name_or_id']
            if uuidutils.is_uuid_like(name_or_uuid):
                return super(PipelineManager, self).get(
                    base_url="/v1",
                    pipeline_id=name_or_uuid)
            else:
                return super(PipelineManager, self).findone(name=name_or_uuid)
