Skip to content
This repository was archived by the owner on Sep 22, 2024. It is now read-only.

Commit 86c0b46

Browse files
authoredJun 22, 2020
Merge pull request #6 from dynatrace-api-framework/PAF-17_DeSmell
PAF-17 PAF-18 De-Smell
2 parents e68b13e + 0319e75 commit 86c0b46

File tree

8 files changed

+57
-40
lines changed

8 files changed

+57
-40
lines changed
 

‎dynatrace/cluster/sso.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
"""SSO Operations for Dynatrace"""
22
import dynatrace.requests.request_handler as rh
33

4+
ENDPOINT = "sso/ssoProvider"
5+
46
def disable_sso (cluster):
57
"""Disable SSO Sign-in"""
68
disable_payload = {
@@ -10,7 +12,7 @@ def disable_sso (cluster):
1012
"ssoGroupsEnabled": False,
1113
"ssoLoginDisabled": True
1214
}
13-
response = rh.cluster_post(cluster, "sso/ssoProvider", json=disable_payload)
15+
response = rh.cluster_post(cluster, ENDPOINT, json=disable_payload)
1416
return response.status_code
1517

1618
def enable_sso(cluster, disable_local=False, groups_enabled=False, is_openid=False):
@@ -30,9 +32,9 @@ def enable_sso(cluster, disable_local=False, groups_enabled=False, is_openid=Fal
3032
if is_openid:
3133
enable_payload['ssoProvider'] = "OIDC"
3234

33-
response = rh.cluster_post(cluster, "sso/ssoProvider", json=enable_payload)
35+
response = rh.cluster_post(cluster, ENDPOINT, json=enable_payload)
3436
return response.status_code
3537

3638
def get_sso_status (cluster):
37-
response = rh.cluster_get(cluster, "sso/ssoProvider")
39+
response = rh.cluster_get(cluster, ENDPOINT)
3840
return response.json()

‎dynatrace/cluster/user_groups.py

-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@ def delete_app_groups (cluster, app_name):
6363
cluster,
6464
"groups/" + group_id
6565
)
66-
return
6766

6867
def delete_app_groups_setwide(app_name):
6968
"""Create Dynatrace User Groups for Applications"""

‎dynatrace/requests/request_handler.py

+18-13
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
import requests
55
from urllib3.exceptions import InsecureRequestWarning
66

7+
HTTPS_STR = "https://"
8+
CLUSTER_V1_PATH = "/api/v1.0/onpremise/"
9+
ENV_API_V1 = "/api/v1/"
10+
CONFIG_API_V1 = "/api/config/v1/"
11+
712
OLD_MERGE_ENVIRONMENT_SETTINGS = requests.Session.merge_environment_settings
813

914
@contextlib.contextmanager
@@ -55,7 +60,7 @@ def sanitize_endpoint (endpoint):
5560

5661
def generate_tenant_url(cluster, tenant):
5762
"""Generate URL based on SaaS or Managed"""
58-
url = "https://"
63+
url = HTTPS_STR
5964
if cluster["is_managed"]:
6065
url = url + cluster['url'] + "/e/" + cluster['tenant'][tenant]
6166
else:
@@ -75,7 +80,7 @@ def cluster_get(cluster, endpoint, params=None):
7580
params['Api-Token'] = cluster['cluster_token']
7681

7782
response = requests.get(
78-
"https://" + cluster['url'] + "/api/v1.0/onpremise/" + endpoint,
83+
HTTPS_STR + cluster['url'] + CLUSTER_V1_PATH + endpoint,
7984
params=params,
8085
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"])
8186
)
@@ -96,7 +101,7 @@ def cluster_post(cluster, endpoint, params=None, json=None):
96101
params['Api-Token'] = cluster['cluster_token']
97102

98103
response = requests.post(
99-
"https://" + cluster['url'] + "/api/v1.0/onpremise/" + endpoint,
104+
HTTPS_STR + cluster['url'] + CLUSTER_V1_PATH + endpoint,
100105
params=params,
101106
json=json,
102107
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"])
@@ -117,7 +122,7 @@ def cluster_put(cluster, endpoint, params=None, json=None):
117122
params['Api-Token'] = cluster['cluster_token']
118123

119124
response = requests.put(
120-
"https://" + cluster['url'] + "/api/v1.0/onpremise/" + endpoint,
125+
HTTPS_STR + cluster['url'] + CLUSTER_V1_PATH + endpoint,
121126
params=params,
122127
json=json,
123128
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"])
@@ -137,7 +142,7 @@ def cluster_delete(cluster, endpoint, params=None, json=None):
137142
with no_ssl_verification():
138143
params['Api-Token'] = cluster['cluster_token']
139144
response = requests.delete(
140-
"https://" + cluster['url'] + "/api/v1.0/onpremise/" + endpoint,
145+
HTTPS_STR + cluster['url'] + CLUSTER_V1_PATH + endpoint,
141146
params=params,
142147
json=json,
143148
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"])
@@ -155,7 +160,7 @@ def env_get(cluster, tenant, endpoint, params=None):
155160
with no_ssl_verification():
156161
params['Api-Token'] = cluster['api_token'][tenant]
157162
response = requests.get(
158-
generate_tenant_url(cluster, tenant) + "/api/v1/" + endpoint,
163+
generate_tenant_url(cluster, tenant) + ENV_API_V1 + endpoint,
159164
params=params,
160165
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"])
161166
)
@@ -173,7 +178,7 @@ def env_post(cluster, tenant, endpoint, params=None, json=None):
173178
params['Api-Token'] = cluster['api_token'][tenant]
174179

175180
response = requests.post(
176-
generate_tenant_url(cluster, tenant) + "/api/v1/" + endpoint,
181+
generate_tenant_url(cluster, tenant) + ENV_API_V1 + endpoint,
177182
params=params,
178183
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"]),
179184
json=json
@@ -192,7 +197,7 @@ def env_put(cluster, tenant, endpoint, params=None, json=None):
192197
params['Api-Token'] = cluster['api_token'][tenant]
193198

194199
response = requests.put(
195-
generate_tenant_url(cluster, tenant) + "/api/v1/" + endpoint,
200+
generate_tenant_url(cluster, tenant) + ENV_API_V1 + endpoint,
196201
params=params,
197202
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"]),
198203
json=json
@@ -210,7 +215,7 @@ def env_delete(cluster, tenant, endpoint, params=None):
210215
with no_ssl_verification():
211216
params['Api-Token'] = cluster['api_token'][tenant]
212217
response = requests.delete(
213-
generate_tenant_url(cluster, tenant) + "/api/v1/" + endpoint,
218+
generate_tenant_url(cluster, tenant) + ENV_API_V1 + endpoint,
214219
params=params,
215220
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"])
216221
)
@@ -229,7 +234,7 @@ def config_get(cluster, tenant, endpoint, params=None, json=None):
229234
params['Api-Token'] = cluster['api_token'][tenant]
230235

231236
response = requests.get(
232-
generate_tenant_url(cluster, tenant) + "/api/config/v1/" + endpoint,
237+
generate_tenant_url(cluster, tenant) + CONFIG_API_V1 + endpoint,
233238
params=params,
234239
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"]),
235240
json=json
@@ -248,7 +253,7 @@ def config_post(cluster, tenant, endpoint, params=None, json=None):
248253
params['Api-Token'] = cluster['api_token'][tenant]
249254

250255
response = requests.post(
251-
generate_tenant_url(cluster, tenant) + "/api/config/v1/" + endpoint,
256+
generate_tenant_url(cluster, tenant) + CONFIG_API_V1 + endpoint,
252257
params=params,
253258
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"]),
254259
json=json
@@ -267,7 +272,7 @@ def config_put(cluster, tenant, endpoint, params=None, json=None):
267272
params['Api-Token'] = cluster['api_token'][tenant]
268273

269274
response = requests.put(
270-
generate_tenant_url(cluster, tenant) + "/api/config/v1/" + endpoint,
275+
generate_tenant_url(cluster, tenant) + CONFIG_API_V1 + endpoint,
271276
params=params,
272277
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"]),
273278
json=json
@@ -286,7 +291,7 @@ def config_delete(cluster, tenant, endpoint, params=None, json=None):
286291
params['Api-Token'] = cluster['api_token'][tenant]
287292

288293
response = requests.delete(
289-
generate_tenant_url(cluster, tenant) + "/api/config/v1/" + endpoint,
294+
generate_tenant_url(cluster, tenant) + CONFIG_API_V1 + endpoint,
290295
params=params,
291296
verify=(True if "verify_ssl" not in cluster else cluster ["verify_ssl"]),
292297
json=json

‎dynatrace/tenant/maintenance.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import dynatrace.requests.request_handler as rh
55
import user_variables as uv
66

7+
8+
MZ_ENDPOINT = "/maintenanceWindows/"
9+
710
class InvalidDateFormatException(ValueError):
811
def __init__(self, required_format):
912
self.required_format = required_format
@@ -114,28 +117,28 @@ def generate_schedule(recurrence_type, start_time, duration, range_start, range_
114117

115118
def create_window (cluster, tenant, json):
116119
"""Create Maintenance Window"""
117-
response = rh.config_post(cluster, tenant, '/maintenanceWindows', json=json)
120+
response = rh.config_post(cluster, tenant, MZ_ENDPOINT, json=json)
118121
return response.status_code
119122

120123
def update_window (cluster, tenant, window_id, json):
121124
"""Update Maintenance Window"""
122-
response = rh.config_put(cluster, tenant, '/maintenanceWindows/' + window_id, json=json)
125+
response = rh.config_put(cluster, tenant, MZ_ENDPOINT + window_id, json=json)
123126
return response.status_code
124127

125128
def delete_window (cluster, tenant, window_id):
126129
"""Delete Maintenance Window"""
127-
response = rh.config_delete(cluster, tenant, '/maintenanceWindows/' + window_id)
130+
response = rh.config_delete(cluster, tenant, MZ_ENDPOINT + window_id)
128131
return response.status_code
129132

130133
def get_windows (cluster, tenant):
131134
"""Return List of Maintenance Windows in Effect"""
132-
response = rh.config_get(cluster, tenant, '/maintenanceWindows')
135+
response = rh.config_get(cluster, tenant, MZ_ENDPOINT)
133136
return response.json()
134137

135138

136139
def get_window (cluster, tenant, window_id):
137140
"""Return Maintenance Window Details"""
138-
response = rh.config_get(cluster, tenant, '/maintenanceWindows/' + window_id)
141+
response = rh.config_get(cluster, tenant, MZ_ENDPOINT + window_id)
139142
return response.json()
140143

141144
def parse_tag(tag_string):

‎dynatrace/tenant/request_attributes.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import json
44
from dynatrace.requests import request_handler as rh
55

6+
ENDPOINT = "/service/requestAttributes/"
7+
68
def pull_to_files(cluster, tenant, ignore_disabled=True):
79
"""Pull files from an environment to local"""
810
# API Calls needed: Pull RA, take the ID and pull the details of each RA
9-
all_ra_call = rh.config_get(cluster, tenant, "/service/requestAttributes")
11+
all_ra_call = rh.config_get(cluster, tenant, ENDPOINT)
1012
all_ra_json = all_ra_call.json()
1113
all_ra_json = all_ra_json['values']
1214
#print (json.dumps(all_ra_json, indent=2))
@@ -15,7 +17,7 @@ def pull_to_files(cluster, tenant, ignore_disabled=True):
1517
single_ra_call = rh.config_get(
1618
cluster,
1719
tenant,
18-
"/service/requestAttributes/" + str(request_attribute['id'])
20+
ENDPOINT + str(request_attribute['id'])
1921
)
2022
if single_ra_call.status_code == 200:
2123
single_ra_json = single_ra_call.json()
@@ -34,7 +36,7 @@ def push_from_files(file_list, cluster, tenant):
3436
"""Push Request Attributes in JSONs to a tenant"""
3537

3638
# Checks for Existing RAs to update them put request rather than a post that would fail
37-
existing_ra_get = rh.config_get(cluster, tenant, "/service/requestAttributes")
39+
existing_ra_get = rh.config_get(cluster, tenant, ENDPOINT)
3840
existing_ra_json = existing_ra_get.json()
3941
existing_ra_json = existing_ra_json['values']
4042
existing_ra_list = {}
@@ -48,14 +50,14 @@ def push_from_files(file_list, cluster, tenant):
4850
single_ra_post = rh.config_put(
4951
cluster,
5052
tenant,
51-
"/service/requestAttributes/" + existing_ra_list[file],
53+
ENDPOINT + existing_ra_list[file],
5254
json=ra_json
5355
)
5456
else:
5557
single_ra_post = rh.config_post(
5658
cluster,
5759
tenant,
58-
"/service/requestAttributes",
60+
ENDPOINT,
5961
json=ra_json
6062
)
6163
if single_ra_post.status_code >= 400:

‎dynatrace/timeseries/timeseries.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
from dynatrace.requests import request_handler as rh
22

3+
ENDPOINT = "timeseries/"
4+
35
def get_timeseries_list(cluster, tenant, params=None):
46
"""Get List of Timeseries Metics"""
5-
response = rh.env_get(cluster, tenant, "timeseries", params=params)
7+
response = rh.env_get(cluster, tenant, ENDPOINT, params=params)
68
return response.json()
79

810
def get_timeseries_metric (cluster, tenant, metric, params=None):
911
"""Get Timeseries Metric"""
1012
#Chose to do GET, but could also be done as POST. Don't think there are any advantages to post
11-
response = rh.env_get(cluster, tenant, "timeseries/" + metric, params=params)
13+
response = rh.env_get(cluster, tenant, ENDPOINT + metric, params=params)
1214
return response.json()
1315

1416
def create_custom_metric (cluster, tenant, metric, json, params=None):
15-
response = rh.env_put(cluster, tenant, "timeseries/" + metric, params=params, json=json)
17+
response = rh.env_put(cluster, tenant, ENDPOINT + metric, params=params, json=json)
1618
return response.status_code
1719

1820
def delete_custom_metic (cluster, tenant, metric):
19-
response = rh.env_delete(cluster, tenant, "timeseries/" + metric)
21+
response = rh.env_delete(cluster, tenant, ENDPOINT + metric)
2022
return response.status_code

‎dynatrace/topology/applications.py

+7-5
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@
22
# Applications needs a seperate definition since the url is not the same (not /infrastructre/)
33
from dynatrace.requests import request_handler as rh
44

5+
ENDPOINT = "entity/applications/"
6+
57
def get_applications_tenantwide(cluster, tenant):
68
"""Get Information for all applications in a tenant"""
7-
response = rh.env_get(cluster, tenant, "entity/applications")
9+
response = rh.env_get(cluster, tenant, ENDPOINT)
810
return response.json()
911

1012
def get_application(cluster, tenant, entity):
1113
"""Get Information on one application for in a tenant"""
12-
response = rh.env_get(cluster, tenant, "entity/applications/" + entity)
14+
response = rh.env_get(cluster, tenant, ENDPOINT + entity)
1315
return response.json()
1416

1517
def set_application_properties(cluster, tenant, entity, prop_json):
1618
"""Update properties of application entity"""
17-
response = rh.env_post(cluster, tenant, "entity/applications/" + entity, json=prop_json)
19+
response = rh.env_post(cluster, tenant, ENDPOINT + entity, json=prop_json)
1820
return response.json()
1921

2022
def get_application_count_tenantwide(cluster, tenant):
@@ -24,7 +26,7 @@ def get_application_count_tenantwide(cluster, tenant):
2426
"includeDetails" : "false"
2527
}
2628

27-
response = rh.env_get(cluster, tenant, "entity/applications", params=params)
29+
response = rh.env_get(cluster, tenant, ENDPOINT, params=params)
2830
env_app_count = len(response.json())
2931
return env_app_count
3032

@@ -55,5 +57,5 @@ def add_application_tags (cluster, tenant, entity, tag_list):
5557

5658
def get_application_baseline(cluster, tenant, entity):
5759
"""Get baselines on one application for in a tenant"""
58-
response = rh.env_get(cluster, tenant, "entity/applications/" + entity + "/baseline")
60+
response = rh.env_get(cluster, tenant, ENDPOINT + entity + "/baseline")
5961
return response.json()

‎dynatrace/topology/shared.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
# 2. Get specific entity - application, host process, process group, service
77
# 3. Update properties of entity - application, custom, host, process group, service
88

9+
ENDPOINT = "entity/infrastructure/"
10+
911
def check_valid_layer(layer, layer_list):
1012
"""Check if the operation is valid for the layer"""
1113
if layer is None or layer_list is None:
@@ -21,7 +23,7 @@ def get_env_layer_entities(cluster, tenant, layer, params=None):
2123
response = rh.env_get(
2224
cluster,
2325
tenant,
24-
"entity/infrastructure/" + layer,
26+
ENDPOINT + layer,
2527
params=params
2628
)
2729
return response.json()
@@ -33,7 +35,7 @@ def get_env_layer_entity(cluster, tenant, layer, entity, params=None):
3335
response = rh.env_get(
3436
cluster,
3537
tenant,
36-
"entity/infrastructure/" + layer + "/" + entity,
38+
ENDPOINT + layer + "/" + entity,
3739
params=params
3840
)
3941
return response.json()
@@ -45,7 +47,7 @@ def set_env_layer_properties(cluster, tenant, layer, entity, prop_json):
4547
response = rh.env_post(
4648
cluster,
4749
tenant,
48-
"entity/infrastructure/" + layer + "/" + entity,
50+
ENDPOINT + layer + "/" + entity,
4951
json=prop_json
5052
)
5153
return response.status_code
@@ -62,7 +64,7 @@ def get_env_layer_count(cluster, tenant, layer, params=None):
6264
params['includeDetails'] : "false"
6365

6466
check_valid_layer(layer, layer_list)
65-
response = rh.env_get(cluster, tenant, "entity/infrastructure/" + layer, params=params)
67+
response = rh.env_get(cluster, tenant, ENDPOINT + layer, params=params)
6668
env_layer_count = len(response.json())
6769
return env_layer_count
6870

0 commit comments

Comments
 (0)
This repository has been archived.