# -*- coding: utf-8 -*-

""" Code is generated by ucloud-model, DO NOT EDIT IT. """
from ucloud.core.client import Client
from ucloud.services.uhub.schemas import apis


class UHubClient(Client):
    def __init__(self, config, transport=None, middleware=None, logger=None):
        super(UHubClient, self).__init__(config, transport, middleware, logger)

    def create_repo(self, req=None, **kwargs):
        """ CreateRepo - 创建镜像仓库

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **RepoName** (str) - (Required) 仓库名称，不可修改
        - **Description** (str) - 仓库备注
        - **IsShared** (bool) - 镜像仓库是否公开，公开为true、不公开为false;默认为false
        
        **Response**

        - **Message** (str) - 有错误时返回内容
        
        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.CreateRepoRequestSchema().dumps(d)
        kwargs["max_retries"] = 0
        resp = self.invoke("CreateRepo", d, **kwargs)
        return apis.CreateRepoResponseSchema().loads(resp)

    def delete_repo(self, req=None, **kwargs):
        """ DeleteRepo - 删除镜像仓库

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **RepoName** (str) - (Required) 镜像仓库名称
        
        **Response**

        
        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.DeleteRepoRequestSchema().dumps(d)
        resp = self.invoke("DeleteRepo", d, **kwargs)
        return apis.DeleteRepoResponseSchema().loads(resp)

    def delete_repo_image(self, req=None, **kwargs):
        """ DeleteRepoImage - 删除镜像

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **ImageName** (str) - (Required) 镜像名称
        - **RepoName** (str) - (Required) 镜像仓库名称
        - **TagName** (str) - 不指定tag则删除全部tag
        
        **Response**

        
        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.DeleteRepoImageRequestSchema().dumps(d)
        resp = self.invoke("DeleteRepoImage", d, **kwargs)
        return apis.DeleteRepoImageResponseSchema().loads(resp)

    def get_image_tag(self, req=None, **kwargs):
        """ GetImageTag - 获取镜像tag

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **ImageName** (str) - (Required) 镜像名称
        - **RepoName** (str) - (Required) 镜像仓库名称
        - **Limit** (int) - 每次获取数量，默认为20
        - **Offset** (int) - 偏移量，默认0
        - **TagName** (str) - 默认不写，如果填写，代表查询该tag，否则查全部tag
        
        **Response**

        - **TagSet** (list) - 见 **TagSet** 模型定义
        - **TotalCount** (int) - tag总数
        
        **Response Model**
        
        **TagSet** 
        
        - **TagName** (str) - Tag名称
        - **UpdateTime** (str) - 镜像更新时间

        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.GetImageTagRequestSchema().dumps(d)
        resp = self.invoke("GetImageTag", d, **kwargs)
        return apis.GetImageTagResponseSchema().loads(resp)

    def get_repo(self, req=None, **kwargs):
        """ GetRepo - 获取镜像仓库

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **Limit** (int) - 数量，默认20
        - **Offset** (int) - 偏移量，默认0
        - **Type** (str) - private私有仓库，public公共仓库，默认public
        
        **Response**

        - **RepoSet** (list) - 见 **RepoSet** 模型定义
        - **TotalCount** (int) - 总的仓库数量
        
        **Response Model**
        
        **RepoSet** 
        
        - **CreateTime** (str) - 仓库创建时间
        - **Description** (str) - 镜像仓库描述
        - **IsOutSide** (str) - 镜像仓库是否外网可以访问，可以为ture,不可以为false
        - **IsShared** (str) - 镜像仓库类型,false为私有；true为公有
        - **RepoName** (str) - 镜像仓库名称
        - **UpdateTime** (str) - 仓库更新时间

        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.GetRepoRequestSchema().dumps(d)
        resp = self.invoke("GetRepo", d, **kwargs)
        return apis.GetRepoResponseSchema().loads(resp)

    def get_repo_image(self, req=None, **kwargs):
        """ GetRepoImage - 获取镜像仓库下的镜像

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **RepoName** (str) - (Required) 镜像仓库名称
        - **Limit** (int) - 显示数量，默认为20
        - **Offset** (int) - 偏移量，默认0
        
        **Response**

        - **ImageSet** (list) - 见 **ImageSet** 模型定义
        - **TotalCount** (int) - 
        
        **Response Model**
        
        **ImageSet** 
        
        - **CreateTime** (str) - 创建时间
        - **ImageName** (str) - 镜像名称
        - **LatestTag** (str) - 最新push的Tag
        - **PullCount** (int) - 镜像被下载次数
        - **RepoName** (str) - 镜像仓库名称
        - **UpdateTime** (str) - 修改时间

        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.GetRepoImageRequestSchema().dumps(d)
        resp = self.invoke("GetRepoImage", d, **kwargs)
        return apis.GetRepoImageResponseSchema().loads(resp)

    def update_repo(self, req=None, **kwargs):
        """ UpdateRepo - 更新镜像仓库

        **Request**

        - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目，子帐号必须填写。 请参考 `GetProjectList接口 <https://docs.ucloud.cn/api/summary/get_project_list.html>`_ 
        - **RepoName** (str) - (Required) 镜像仓库名称，不可修改
        - **Description** (str) - 备注
        - **IsShared** (str) - false设置为私有；true设置为公有。默认false
        
        **Response**

        - **Message** (str) - 错误的时候返回
        
        """
        d = {"ProjectId": self.config.project_id}
        req and d.update(req)
        d = apis.UpdateRepoRequestSchema().dumps(d)
        resp = self.invoke("UpdateRepo", d, **kwargs)
        return apis.UpdateRepoResponseSchema().loads(resp)
