# coding: utf-8


"""
IGNORE:
    Nutanix Networking Versioned APIs

    Manage networking configuration on Nutanix clusters, including AHV and advanced networking.  # noqa: E501

    OpenAPI spec version: 4.0.1-alpha-1
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
IGNORE
"""
from __future__ import absolute_import

import re  # noqa: F401

# python 2 and python 3 compatibility library
import six

from ntnx_networking_py_client.api_client import ApiClient


class RoutingPolicyStatsApi(object):
    """IGNORE:
    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
    IGNORE
    """ # noqa: E501

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

    def clear_all_routing_policy_counter(self, body, **kwargs):  # noqa: E501
        """Clear the value in packet and byte counters of all Routing Policies in the chosen VPC.
        Clear the value in the packet and byte counters for  all routing policies in the chosen VPC.

        >>> response = api.clear_all_routing_policy_counter(body)

        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.clear_all_routing_policy_counter(body, async_req=True)
        >>> result = thread.get()

        :param networking.v4.stats.RoutingPolicyClearCountersBody body: VPC UUID to reset all routing policy counters to zero. (required)
        :param bool async_req:
        :return: networking.v4.stats.RoutingPolicyClearCountersApiResponse

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

    def clear_all_routing_policy_counter_with_http_info(self, body, **kwargs):  # noqa: E501
        """Clear the value in packet and byte counters of all Routing Policies in the chosen VPC.
        Clear the value in the packet and byte counters for  all routing policies in the chosen VPC.

        >>> response = api.clear_all_routing_policy_counter(body)

        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.clear_all_routing_policy_counter_with_http_info(body, async_req=True)
        >>> result = thread.get()

        :param networking.v4.stats.RoutingPolicyClearCountersBody body: VPC UUID to reset all routing policy counters to zero. (required)
        :param bool async_req:
        :return: networking.v4.stats.RoutingPolicyClearCountersApiResponse

                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        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 clear_all_routing_policy_counter" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'body' is set
        if ('body' not in params or
                params['body'] is None):
            raise ValueError("Missing the required parameter `body` when calling `clear_all_routing_policy_counter`")  # noqa: E501

        collection_formats = {}

        path_params = {}

        query_params = []

        header_params = {}
        if 'if_match' in params and params['if_match'] is not None:
            header_params['If-Match'] = params['if_match']  # noqa: E501
        if 'if_none_match' in params and params['if_none_match'] is not None:
            header_params['If-None-Match'] = params['if_none_match']  # noqa: E501

        form_params = []
        local_var_files = {}

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

        # HTTP header `Content-Type`
        header_params['Content-Type'] = self.api_client.select_header_content_type(  # noqa: E501
            ['application/json'])  # noqa: E501

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

        return self.api_client.call_api(
            '/api/networking/v4.0.a1/stats/routing-policies/$actions/clear', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='networking.v4.stats.RoutingPolicyClearCountersApiResponse',  # 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 clear_routing_policy_counter(self, extId, **kwargs):  # noqa: E501
        """Clear the value in packet and byte counters of chosen Routing Policy.
        Clear the value in packet and byte counters of the chosen routing policy.

        >>> response = api.clear_routing_policy_counter(extId)

        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.clear_routing_policy_counter(extId, async_req=True)
        >>> result = thread.get()

        :param str extId: ExtId of the Routing Policy. (required)
        :param bool async_req:
        :return: networking.v4.stats.RoutingPolicyClearCountersApiResponse

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

    def clear_routing_policy_counter_with_http_info(self, extId, **kwargs):  # noqa: E501
        """Clear the value in packet and byte counters of chosen Routing Policy.
        Clear the value in packet and byte counters of the chosen routing policy.

        >>> response = api.clear_routing_policy_counter(extId)

        This method makes a synchronous HTTP request by default. To make an
        asynchronous HTTP request, please pass async_req=True

        >>> thread = api.clear_routing_policy_counter_with_http_info(extId, async_req=True)
        >>> result = thread.get()

        :param str extId: ExtId of the Routing Policy. (required)
        :param bool async_req:
        :return: networking.v4.stats.RoutingPolicyClearCountersApiResponse

                 If the method is called asynchronously,
                 returns the request thread.
        """

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

        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 clear_routing_policy_counter" % key
                )
            params[key] = val
        del params['kwargs']
        # verify the required parameter 'extId' is set
        if ('extId' not in params or
                params['extId'] is None):
            raise ValueError("Missing the required parameter `extId` when calling `clear_routing_policy_counter`")  # noqa: E501

        collection_formats = {}

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

        query_params = []

        header_params = {}
        if 'if_match' in params and params['if_match'] is not None:
            header_params['If-Match'] = params['if_match']  # noqa: E501
        if 'if_none_match' in params and params['if_none_match'] is not None:
            header_params['If-None-Match'] = params['if_none_match']  # noqa: E501

        form_params = []
        local_var_files = {}

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

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

        return self.api_client.call_api(
            '/api/networking/v4.0.a1/stats/routing-policies/{extId}/$actions/clear', 'POST',
            path_params,
            query_params,
            header_params,
            body=body_params,
            post_params=form_params,
            files=local_var_files,
            response_type='networking.v4.stats.RoutingPolicyClearCountersApiResponse',  # 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)
