# coding: utf-8

"""
    Zadara VPSA Storage Array REST API

     # Overview  This document outlines the methods available for administrating your Zadara Storage VPSA&#8482;. The Zadara Storage Array REST API   supports form-encoded, JSON, and XML requests, and can return either JSON or XML responses.  ## Usage  The majority of the APIs available require authentication which requires an API token to use. You can retrieve this token through the   Users section of your VPSA, or through the API using the \"Return a user's access key\" API in the Users Section below.  ## Authentication Methods  The authentication token can be passed either through the access_key parameter inside of the body of the REST API request, or   through the X-Access-Key header.  ## Timeouts  By default, all operations that don't complete within five seconds will return a message informing you that the action may take some  time to complete. When using the API, this can cause some actions, such as large volume creation, to be undesirably asynchronous.  You can specify your own timeout with the timeout parameter, in seconds, and a timeout value of -1 specifies an infinite timeout.  ## Specific Fields For Product  Some of the fields/actions used in the API should be used only for a specific product. The following tags are used to mark which   product responds to the fields/actions  VPSA Flash Array  VPSA Storage Array - Hybrid VPSA  ## Questions  If you have any questions or need support involving the REST API, please contact for assistance.   # noqa: E501

    OpenAPI spec version: 23.03-sp1
    Contact: support@zadarastorage.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from Vpsa.api_client import ApiClient


class FileLifecyclePoliciesApi(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    Ref: https://github.com/swagger-api/swagger-codegen
    """

    def __init__(self, api_client=None):
        if api_client is None:
            api_client = ApiClient()
        self.api_client = api_client

    def attach_flc_policy(self, id, attach_flc_policy, **kwargs):  # noqa: E501
        """attach_flc_policy  # noqa: E501

        Attach a volume to a file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.attach_flc_policy(id, attach_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param AttachFlcPolicy attach_flc_policy: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.attach_flc_policy_with_http_info(id, attach_flc_policy, **kwargs)  # noqa: E501
        else:
            (data) = self.attach_flc_policy_with_http_info(id, attach_flc_policy, **kwargs)  # noqa: E501
            return data

    def attach_flc_policy_with_http_info(self, id, attach_flc_policy, **kwargs):  # noqa: E501
        """attach_flc_policy  # noqa: E501

        Attach a volume to a file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.attach_flc_policy_with_http_info(id, attach_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param AttachFlcPolicy attach_flc_policy: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id', 'attach_flc_policy']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method attach_flc_policy" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `attach_flc_policy`")  # noqa: E501
        # verify the required parameter 'attach_flc_policy' is set
        if self.api_client.client_side_validation and ('attach_flc_policy' not in params or
                                                       params['attach_flc_policy'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `attach_flc_policy` when calling `attach_flc_policy`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'attach_flc_policy' in params:
            body_params = params['attach_flc_policy']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}/attach.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20039',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def create_flc_policy(self, create_flc_policy, **kwargs):  # noqa: E501
        """create_flc_policy  # noqa: E501

        Create a new file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_flc_policy(create_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param CreateFlcPolicy create_flc_policy: (required)
        :return: InlineResponse20034
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.create_flc_policy_with_http_info(create_flc_policy, **kwargs)  # noqa: E501
        else:
            (data) = self.create_flc_policy_with_http_info(create_flc_policy, **kwargs)  # noqa: E501
            return data

    def create_flc_policy_with_http_info(self, create_flc_policy, **kwargs):  # noqa: E501
        """create_flc_policy  # noqa: E501

        Create a new file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.create_flc_policy_with_http_info(create_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param CreateFlcPolicy create_flc_policy: (required)
        :return: InlineResponse20034
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['create_flc_policy']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method create_flc_policy" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'create_flc_policy' is set
        if self.api_client.client_side_validation and ('create_flc_policy' not in params or
                                                       params['create_flc_policy'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `create_flc_policy` when calling `create_flc_policy`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'create_flc_policy' in params:
            body_params = params['create_flc_policy']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies.json', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20034',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def delete_flc_policy(self, id, **kwargs):  # noqa: E501
        """delete_flc_policy  # noqa: E501

        Delete a file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_flc_policy(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20038
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.delete_flc_policy_with_http_info(id, **kwargs)  # noqa: E501
        else:
            (data) = self.delete_flc_policy_with_http_info(id, **kwargs)  # noqa: E501
            return data

    def delete_flc_policy_with_http_info(self, id, **kwargs):  # noqa: E501
        """delete_flc_policy  # noqa: E501

        Delete a file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.delete_flc_policy_with_http_info(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20038
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method delete_flc_policy" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `delete_flc_policy`")  # noqa: E501

        if self.api_client.client_side_validation and ('id' in params and not re.search(r'^lc_policy-[0-9a-f]{8}$', params['id'])):  # noqa: E501
            raise ValueError("Invalid value for parameter `id` when calling `delete_flc_policy`, must conform to the pattern `/^lc_policy-[0-9a-f]{8}$/`")  # noqa: E501
        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}.json', 'DELETE',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20038',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def detach_flc_policy(self, id, detach_flc_policy, **kwargs):  # noqa: E501
        """detach_flc_policy  # noqa: E501

        Detach a volume from a file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.detach_flc_policy(id, detach_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param DetachFlcPolicy detach_flc_policy: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.detach_flc_policy_with_http_info(id, detach_flc_policy, **kwargs)  # noqa: E501
        else:
            (data) = self.detach_flc_policy_with_http_info(id, detach_flc_policy, **kwargs)  # noqa: E501
            return data

    def detach_flc_policy_with_http_info(self, id, detach_flc_policy, **kwargs):  # noqa: E501
        """detach_flc_policy  # noqa: E501

        Detach a volume from a file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.detach_flc_policy_with_http_info(id, detach_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param DetachFlcPolicy detach_flc_policy: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id', 'detach_flc_policy']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method detach_flc_policy" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `detach_flc_policy`")  # noqa: E501
        # verify the required parameter 'detach_flc_policy' is set
        if self.api_client.client_side_validation and ('detach_flc_policy' not in params or
                                                       params['detach_flc_policy'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `detach_flc_policy` when calling `detach_flc_policy`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'detach_flc_policy' in params:
            body_params = params['detach_flc_policy']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}/detach.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20039',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_all_flc_policies(self, **kwargs):  # noqa: E501
        """get_all_flc_policies  # noqa: E501

        Show file lifecycle policies.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_all_flc_policies(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param GetAllFlcPolicies get_all_flc_policies:
        :return: InlineResponse20033
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_all_flc_policies_with_http_info(**kwargs)  # noqa: E501
        else:
            (data) = self.get_all_flc_policies_with_http_info(**kwargs)  # noqa: E501
            return data

    def get_all_flc_policies_with_http_info(self, **kwargs):  # noqa: E501
        """get_all_flc_policies  # noqa: E501

        Show file lifecycle policies.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_all_flc_policies_with_http_info(async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param GetAllFlcPolicies get_all_flc_policies:
        :return: InlineResponse20033
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['get_all_flc_policies']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_all_flc_policies" % key
                )
            params[key] = val
        del params['kwargs']

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'get_all_flc_policies' in params:
            body_params = params['get_all_flc_policies']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20033',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_all_flc_policies_rules(self, get_all_flc_policies_rules, **kwargs):  # noqa: E501
        """get_all_flc_policies_rules  # noqa: E501

        Show the rules attaching file lifecycle policies to volumes.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_all_flc_policies_rules(get_all_flc_policies_rules, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param GetAllFlcPoliciesRules get_all_flc_policies_rules: (required)
        :return: InlineResponse20035
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_all_flc_policies_rules_with_http_info(get_all_flc_policies_rules, **kwargs)  # noqa: E501
        else:
            (data) = self.get_all_flc_policies_rules_with_http_info(get_all_flc_policies_rules, **kwargs)  # noqa: E501
            return data

    def get_all_flc_policies_rules_with_http_info(self, get_all_flc_policies_rules, **kwargs):  # noqa: E501
        """get_all_flc_policies_rules  # noqa: E501

        Show the rules attaching file lifecycle policies to volumes.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_all_flc_policies_rules_with_http_info(get_all_flc_policies_rules, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param GetAllFlcPoliciesRules get_all_flc_policies_rules: (required)
        :return: InlineResponse20035
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['get_all_flc_policies_rules']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_all_flc_policies_rules" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'get_all_flc_policies_rules' is set
        if self.api_client.client_side_validation and ('get_all_flc_policies_rules' not in params or
                                                       params['get_all_flc_policies_rules'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `get_all_flc_policies_rules` when calling `get_all_flc_policies_rules`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'get_all_flc_policies_rules' in params:
            body_params = params['get_all_flc_policies_rules']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/rules.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20035',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def get_flc_policy(self, id, **kwargs):  # noqa: E501
        """get_flc_policy  # noqa: E501

        Retreive a specific file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_flc_policy(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20036
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.get_flc_policy_with_http_info(id, **kwargs)  # noqa: E501
        else:
            (data) = self.get_flc_policy_with_http_info(id, **kwargs)  # noqa: E501
            return data

    def get_flc_policy_with_http_info(self, id, **kwargs):  # noqa: E501
        """get_flc_policy  # noqa: E501

        Retreive a specific file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.get_flc_policy_with_http_info(id, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :return: InlineResponse20036
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method get_flc_policy" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `get_flc_policy`")  # noqa: E501

        if self.api_client.client_side_validation and ('id' in params and not re.search(r'^lc_policy-[0-9a-f]{8}$', params['id'])):  # noqa: E501
            raise ValueError("Invalid value for parameter `id` when calling `get_flc_policy`, must conform to the pattern `/^lc_policy-[0-9a-f]{8}$/`")  # noqa: E501
        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}.json', 'GET',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20036',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def pause_flc_policy_on_volume(self, id, pause_flc_policy_on_volume, **kwargs):  # noqa: E501
        """pause_flc_policy_on_volume  # noqa: E501

        Pause a file lifecycle policy for a given volume.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.pause_flc_policy_on_volume(id, pause_flc_policy_on_volume, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param PauseFlcPolicyOnVolume pause_flc_policy_on_volume: (required)
        :return: InlineResponse20037
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.pause_flc_policy_on_volume_with_http_info(id, pause_flc_policy_on_volume, **kwargs)  # noqa: E501
        else:
            (data) = self.pause_flc_policy_on_volume_with_http_info(id, pause_flc_policy_on_volume, **kwargs)  # noqa: E501
            return data

    def pause_flc_policy_on_volume_with_http_info(self, id, pause_flc_policy_on_volume, **kwargs):  # noqa: E501
        """pause_flc_policy_on_volume  # noqa: E501

        Pause a file lifecycle policy for a given volume.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.pause_flc_policy_on_volume_with_http_info(id, pause_flc_policy_on_volume, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param PauseFlcPolicyOnVolume pause_flc_policy_on_volume: (required)
        :return: InlineResponse20037
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id', 'pause_flc_policy_on_volume']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method pause_flc_policy_on_volume" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `pause_flc_policy_on_volume`")  # noqa: E501
        # verify the required parameter 'pause_flc_policy_on_volume' is set
        if self.api_client.client_side_validation and ('pause_flc_policy_on_volume' not in params or
                                                       params['pause_flc_policy_on_volume'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `pause_flc_policy_on_volume` when calling `pause_flc_policy_on_volume`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'pause_flc_policy_on_volume' in params:
            body_params = params['pause_flc_policy_on_volume']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}/pause.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20037',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def resume_flc_policy_on_volume(self, id, resume_flc_policy_on_volume, **kwargs):  # noqa: E501
        """resume_flc_policy_on_volume  # noqa: E501

        Resume a file lifecycle policy for a given volume.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.resume_flc_policy_on_volume(id, resume_flc_policy_on_volume, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param ResumeFlcPolicyOnVolume resume_flc_policy_on_volume: (required)
        :return: InlineResponse20037
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.resume_flc_policy_on_volume_with_http_info(id, resume_flc_policy_on_volume, **kwargs)  # noqa: E501
        else:
            (data) = self.resume_flc_policy_on_volume_with_http_info(id, resume_flc_policy_on_volume, **kwargs)  # noqa: E501
            return data

    def resume_flc_policy_on_volume_with_http_info(self, id, resume_flc_policy_on_volume, **kwargs):  # noqa: E501
        """resume_flc_policy_on_volume  # noqa: E501

        Resume a file lifecycle policy for a given volume.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.resume_flc_policy_on_volume_with_http_info(id, resume_flc_policy_on_volume, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param ResumeFlcPolicyOnVolume resume_flc_policy_on_volume: (required)
        :return: InlineResponse20037
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id', 'resume_flc_policy_on_volume']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method resume_flc_policy_on_volume" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `resume_flc_policy_on_volume`")  # noqa: E501
        # verify the required parameter 'resume_flc_policy_on_volume' is set
        if self.api_client.client_side_validation and ('resume_flc_policy_on_volume' not in params or
                                                       params['resume_flc_policy_on_volume'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `resume_flc_policy_on_volume` when calling `resume_flc_policy_on_volume`")  # noqa: E501

        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'resume_flc_policy_on_volume' in params:
            body_params = params['resume_flc_policy_on_volume']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}/resume.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20037',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_flc_policy(self, id, update_flc_policy, **kwargs):  # noqa: E501
        """update_flc_policy  # noqa: E501

        Updates an existing file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_flc_policy(id, update_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param UpdateFlcPolicy update_flc_policy: (required)
        :return: InlineResponse20037
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.update_flc_policy_with_http_info(id, update_flc_policy, **kwargs)  # noqa: E501
        else:
            (data) = self.update_flc_policy_with_http_info(id, update_flc_policy, **kwargs)  # noqa: E501
            return data

    def update_flc_policy_with_http_info(self, id, update_flc_policy, **kwargs):  # noqa: E501
        """update_flc_policy  # noqa: E501

        Updates an existing file lifecycle policy.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_flc_policy_with_http_info(id, update_flc_policy, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param str id: (required)
        :param UpdateFlcPolicy update_flc_policy: (required)
        :return: InlineResponse20037
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['id', 'update_flc_policy']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_flc_policy" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'id' is set
        if self.api_client.client_side_validation and ('id' not in params or
                                                       params['id'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `id` when calling `update_flc_policy`")  # noqa: E501
        # verify the required parameter 'update_flc_policy' is set
        if self.api_client.client_side_validation and ('update_flc_policy' not in params or
                                                       params['update_flc_policy'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `update_flc_policy` when calling `update_flc_policy`")  # noqa: E501

        if self.api_client.client_side_validation and ('id' in params and not re.search(r'^lc_policy-[0-9a-f]{8}$', params['id'])):  # noqa: E501
            raise ValueError("Invalid value for parameter `id` when calling `update_flc_policy`, must conform to the pattern `/^lc_policy-[0-9a-f]{8}$/`")  # noqa: E501
        collection_formats = {}

        path_params = {}
        if 'id' in params:
            path_params['id'] = params['id']  # noqa: E501

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'update_flc_policy' in params:
            body_params = params['update_flc_policy']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/{id}.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20037',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_flc_policy_scheduling(self, update_flc_policy_scheduling, **kwargs):  # noqa: E501
        """update_flc_policy_scheduling  # noqa: E501

        Updates lifecycle policies run time scheduling.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_flc_policy_scheduling(update_flc_policy_scheduling, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param UpdateFlcPolicyScheduling update_flc_policy_scheduling: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.update_flc_policy_scheduling_with_http_info(update_flc_policy_scheduling, **kwargs)  # noqa: E501
        else:
            (data) = self.update_flc_policy_scheduling_with_http_info(update_flc_policy_scheduling, **kwargs)  # noqa: E501
            return data

    def update_flc_policy_scheduling_with_http_info(self, update_flc_policy_scheduling, **kwargs):  # noqa: E501
        """update_flc_policy_scheduling  # noqa: E501

        Updates lifecycle policies run time scheduling.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_flc_policy_scheduling_with_http_info(update_flc_policy_scheduling, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param UpdateFlcPolicyScheduling update_flc_policy_scheduling: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['update_flc_policy_scheduling']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_flc_policy_scheduling" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'update_flc_policy_scheduling' is set
        if self.api_client.client_side_validation and ('update_flc_policy_scheduling' not in params or
                                                       params['update_flc_policy_scheduling'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `update_flc_policy_scheduling` when calling `update_flc_policy_scheduling`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'update_flc_policy_scheduling' in params:
            body_params = params['update_flc_policy_scheduling']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/scheduling.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20039',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)

    def update_flc_recycle_bin(self, update_flc_recycle_bin, **kwargs):  # noqa: E501
        """update_flc_recycle_bin  # noqa: E501

        Configures the recycle bin.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_flc_recycle_bin(update_flc_recycle_bin, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param UpdateFlcRecycleBin update_flc_recycle_bin: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """
        kwargs['_return_http_data_only'] = True
        if kwargs.get('async_req'):
            return self.update_flc_recycle_bin_with_http_info(update_flc_recycle_bin, **kwargs)  # noqa: E501
        else:
            (data) = self.update_flc_recycle_bin_with_http_info(update_flc_recycle_bin, **kwargs)  # noqa: E501
            return data

    def update_flc_recycle_bin_with_http_info(self, update_flc_recycle_bin, **kwargs):  # noqa: E501
        """update_flc_recycle_bin  # noqa: E501

        Configures the recycle bin.  # noqa: E501
        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True
        >>> thread = api.update_flc_recycle_bin_with_http_info(update_flc_recycle_bin, async_req=True)
        >>> result = thread.get()

        :param async_req bool
        :param UpdateFlcRecycleBin update_flc_recycle_bin: (required)
        :return: InlineResponse20039
                 If the method is called asynchronously,
                 returns the request thread.
        """

        all_params = ['update_flc_recycle_bin']  # noqa: E501
        all_params.append('async_req')
        all_params.append('_return_http_data_only')
        all_params.append('_preload_content')
        all_params.append('_request_timeout')

        params = locals()
        for key, val in six.iteritems(params['kwargs']):
            if key not in all_params:
                raise TypeError(
                    "Got an unexpected keyword argument '%s'"
                    " to method update_flc_recycle_bin" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'update_flc_recycle_bin' is set
        if self.api_client.client_side_validation and ('update_flc_recycle_bin' not in params or
                                                       params['update_flc_recycle_bin'] is None):  # noqa: E501
            raise ValueError("Missing the required parameter `update_flc_recycle_bin` when calling `update_flc_recycle_bin`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}

        form_params = []
        local_var_files = {}

        body_params = None
        if 'update_flc_recycle_bin' in params:
            body_params = params['update_flc_recycle_bin']
        # HTTP header `Accept`
        header_params['Accept'] = self.api_client.select_header_accept(
            ['application/json', 'application/xml'])  # noqa: E501

        # Authentication setting
        auth_settings = ['api_key']  # noqa: E501

        return self.api_client.call_api(
            '/flc_policies/recycle_bin.json', 'PUT',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='InlineResponse20039',  # noqa: E501
            auth_settings=auth_settings,
            async_req=params.get('async_req'),
            _return_http_data_only=params.get('_return_http_data_only'),
            _preload_content=params.get('_preload_content', True),
            _request_timeout=params.get('_request_timeout'),
            collection_formats=collection_formats)
