1# coding=utf-8
2# --------------------------------------------------------------------------
3# Copyright (c) Microsoft Corporation. All rights reserved.
4# Licensed under the MIT License. See License.txt in the project root for
5# license information.
6#
7# Code generated by Microsoft (R) AutoRest Code Generator.
8# Changes may cause incorrect behavior and will be lost if the code is
9# regenerated.
10# --------------------------------------------------------------------------
11
12import uuid
13from msrest.pipeline import ClientRawResponse
14from msrestazure.azure_exceptions import CloudError
15
16from .. import models
17
18
19class PermissionsOperations(object):
20    """PermissionsOperations operations.
21
22    You should not instantiate directly this class, but create a Client instance that will create it for you and attach it as attribute.
23
24    :param client: Client for service requests.
25    :param config: Configuration of service client.
26    :param serializer: An object model serializer.
27    :param deserializer: An object model deserializer.
28    :ivar api_version: The API version to use for this operation. Constant value: "2015-07-01".
29    """
30
31    models = models
32
33    def __init__(self, client, config, serializer, deserializer):
34
35        self._client = client
36        self._serialize = serializer
37        self._deserialize = deserializer
38        self.api_version = "2015-07-01"
39
40        self.config = config
41
42    def list_for_resource_group(
43            self, resource_group_name, custom_headers=None, raw=False, **operation_config):
44        """Gets all permissions the caller has for a resource group.
45
46        :param resource_group_name: The name of the resource group to get the
47         permissions for. The name is case insensitive.
48        :type resource_group_name: str
49        :param dict custom_headers: headers that will be added to the request
50        :param bool raw: returns the direct response alongside the
51         deserialized response
52        :param operation_config: :ref:`Operation configuration
53         overrides<msrest:optionsforoperations>`.
54        :return: An iterator like instance of Permission
55        :rtype:
56         ~azure.mgmt.authorization.v2015_07_01.models.PermissionPaged[~azure.mgmt.authorization.v2015_07_01.models.Permission]
57        :raises: :class:`CloudError<msrestazure.azure_exceptions.CloudError>`
58        """
59        def prepare_request(next_link=None):
60            if not next_link:
61                # Construct URL
62                url = self.list_for_resource_group.metadata['url']
63                path_format_arguments = {
64                    'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'),
65                    'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str')
66                }
67                url = self._client.format_url(url, **path_format_arguments)
68
69                # Construct parameters
70                query_parameters = {}
71                query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
72
73            else:
74                url = next_link
75                query_parameters = {}
76
77            # Construct headers
78            header_parameters = {}
79            header_parameters['Accept'] = 'application/json'
80            if self.config.generate_client_request_id:
81                header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
82            if custom_headers:
83                header_parameters.update(custom_headers)
84            if self.config.accept_language is not None:
85                header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
86
87            # Construct and send request
88            request = self._client.get(url, query_parameters, header_parameters)
89            return request
90
91        def internal_paging(next_link=None):
92            request = prepare_request(next_link)
93
94            response = self._client.send(request, stream=False, **operation_config)
95
96            if response.status_code not in [200]:
97                exp = CloudError(response)
98                exp.request_id = response.headers.get('x-ms-request-id')
99                raise exp
100
101            return response
102
103        # Deserialize response
104        header_dict = None
105        if raw:
106            header_dict = {}
107        deserialized = models.PermissionPaged(internal_paging, self._deserialize.dependencies, header_dict)
108
109        return deserialized
110    list_for_resource_group.metadata = {'url': '/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Authorization/permissions'}
111
112    def list_for_resource(
113            self, resource_group_name, resource_provider_namespace, parent_resource_path, resource_type, resource_name, custom_headers=None, raw=False, **operation_config):
114        """Gets all permissions the caller has for a resource.
115
116        :param resource_group_name: The name of the resource group containing
117         the resource. The name is case insensitive.
118        :type resource_group_name: str
119        :param resource_provider_namespace: The namespace of the resource
120         provider.
121        :type resource_provider_namespace: str
122        :param parent_resource_path: The parent resource identity.
123        :type parent_resource_path: str
124        :param resource_type: The resource type of the resource.
125        :type resource_type: str
126        :param resource_name: The name of the resource to get the permissions
127         for.
128        :type resource_name: str
129        :param dict custom_headers: headers that will be added to the request
130        :param bool raw: returns the direct response alongside the
131         deserialized response
132        :param operation_config: :ref:`Operation configuration
133         overrides<msrest:optionsforoperations>`.
134        :return: An iterator like instance of Permission
135        :rtype:
136         ~azure.mgmt.authorization.v2015_07_01.models.PermissionPaged[~azure.mgmt.authorization.v2015_07_01.models.Permission]
137        :raises: :class:`CloudError<msrestazure.azure_exceptions.CloudError>`
138        """
139        def prepare_request(next_link=None):
140            if not next_link:
141                # Construct URL
142                url = self.list_for_resource.metadata['url']
143                path_format_arguments = {
144                    'resourceGroupName': self._serialize.url("resource_group_name", resource_group_name, 'str'),
145                    'resourceProviderNamespace': self._serialize.url("resource_provider_namespace", resource_provider_namespace, 'str'),
146                    'parentResourcePath': self._serialize.url("parent_resource_path", parent_resource_path, 'str', skip_quote=True),
147                    'resourceType': self._serialize.url("resource_type", resource_type, 'str', skip_quote=True),
148                    'resourceName': self._serialize.url("resource_name", resource_name, 'str'),
149                    'subscriptionId': self._serialize.url("self.config.subscription_id", self.config.subscription_id, 'str')
150                }
151                url = self._client.format_url(url, **path_format_arguments)
152
153                # Construct parameters
154                query_parameters = {}
155                query_parameters['api-version'] = self._serialize.query("self.api_version", self.api_version, 'str')
156
157            else:
158                url = next_link
159                query_parameters = {}
160
161            # Construct headers
162            header_parameters = {}
163            header_parameters['Accept'] = 'application/json'
164            if self.config.generate_client_request_id:
165                header_parameters['x-ms-client-request-id'] = str(uuid.uuid1())
166            if custom_headers:
167                header_parameters.update(custom_headers)
168            if self.config.accept_language is not None:
169                header_parameters['accept-language'] = self._serialize.header("self.config.accept_language", self.config.accept_language, 'str')
170
171            # Construct and send request
172            request = self._client.get(url, query_parameters, header_parameters)
173            return request
174
175        def internal_paging(next_link=None):
176            request = prepare_request(next_link)
177
178            response = self._client.send(request, stream=False, **operation_config)
179
180            if response.status_code not in [200]:
181                exp = CloudError(response)
182                exp.request_id = response.headers.get('x-ms-request-id')
183                raise exp
184
185            return response
186
187        # Deserialize response
188        header_dict = None
189        if raw:
190            header_dict = {}
191        deserialized = models.PermissionPaged(internal_paging, self._deserialize.dependencies, header_dict)
192
193        return deserialized
194    list_for_resource.metadata = {'url': '/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{parentResourcePath}/{resourceType}/{resourceName}/providers/Microsoft.Authorization/permissions'}
195