package com.bocloud.ims.interfaces.resource.azure.account;

import com.bocloud.cmp.params.azure.StorageAccountCheckNameParams;
import com.bocloud.cmp.params.azure.UserAssignParams;
import com.bocloud.common.model.BocloudResult;
import com.bocloud.common.model.GridBean;
import com.bocloud.common.model.Pager;
import com.bocloud.common.model.RequestContext;
import com.bocloud.ims.entity.resource.azure.account.StorageAccount;
import com.bocloud.ims.entity.resource.azure.account.StorageAccountFirewall;

/**
 * @Company: 博云 www.bocloud.com
 * @ClassName: StorageAccountService
 * @Description:
 * @author: zhenpingLi/李振平
 * @date: 2020/7/24 14:17
 */
public interface StorageAccountService {

    BocloudResult<GridBean<StorageAccount>> list(Pager pager, RequestContext context);

    BocloudResult<StorageAccount> detail(Long id, RequestContext context);

    BocloudResult<Void> create(StorageAccount entityParams, RequestContext context);

    BocloudResult<Void> modify(StorageAccount entityParams, RequestContext context);

    BocloudResult<Void> remove(Long id, RequestContext context);

    BocloudResult<StorageAccount> assign(UserAssignParams params, RequestContext context);

    BocloudResult<Void> assignBatch(UserAssignParams params, RequestContext context);

    BocloudResult checkName(StorageAccountCheckNameParams params, RequestContext context);

    BocloudResult<Void> customDomain(StorageAccount modifyParams, RequestContext context);

    BocloudResult<Void> minimumTlsVersion(StorageAccount modifyParams, RequestContext context);

    BocloudResult<Void> regenerateKey(StorageAccount modifyParams, RequestContext context);

    BocloudResult<Void> withAccessFromNetworkSubnet(StorageAccount modifyParams, RequestContext context);

    BocloudResult<Void> withoutNetworkSubnetAccess(StorageAccount modifyParams, RequestContext context);

    BocloudResult<Void> withAccessFromAllNetworks(StorageAccount modifyParams, RequestContext context);

    BocloudResult<Void> withAccessFromIpAddress(StorageAccountFirewall modifyParams, RequestContext context);

    BocloudResult<Void> withoutIpAddressAccess(StorageAccountFirewall modifyParams, RequestContext context);

}