Skip to content

Commit 9c3c59b

Browse files
committed
- Added change request support for segment class
- Added missing properties for all schemas of resource classes - Updated relevant tests
1 parent 03be9ce commit 9c3c59b

16 files changed

Lines changed: 111 additions & 17 deletions

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ Full documentation on this Python wrapper is available in [this link](https://he
88

99
### Quick setup
1010

11-
Install the split-admin-api:
11+
Install the splitapiclient:
1212
```
13-
pip install split-admin-api
13+
pip install splitapiclient
1414
```
1515

1616
Import the client object and initialize connection using an Admin API Key:

splitapiclient/microclients/change_request_microclient.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def update_status(self, change_request_id, new_status, comment):
125125
)
126126
return ChangeRequest(response, self._http_client)
127127

128-
def submit_change_request(self, split_name, environment_id, workspace_id, data):
128+
def submit_change_request(self, environment_id, workspace_id, data):
129129
'''
130130
Submit a split definition change request
131131
@@ -134,7 +134,6 @@ def submit_change_request(self, split_name, environment_id, workspace_id, data):
134134
'''
135135
response = self._http_client.make_request(
136136
self._endpoint['submit_change_request'],
137-
splitName = split_name,
138137
environmentId = environment_id,
139138
workspaceId = workspace_id,
140139
body = data

splitapiclient/microclients/segment_definition_microclient.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,11 @@ def list(self, environment_id, workspace_id):
8686
continue
8787
else:
8888
break
89-
return [SegmentDefinition(item, self._http_client) for item in final_list]
89+
segment_definition_list = []
90+
for item in final_list:
91+
item['environment'] = {'id':environment_id, 'name':''}
92+
segment_definition_list.append(SegmentDefinition(item, self._http_client))
93+
return segment_definition_list
9094

9195
def find(self, segment_name, environment_id, workspace_id):
9296
'''

splitapiclient/resources/apikey.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def __init__(self, data=None, client=None):
4343
self._name = data.get('name')
4444
self._apiKeyType = data.get('apiKeyType')
4545
self._createdBy = data.get('createdBy')
46-
self._createdAt = data.get('createdAt')
46+
self._created_at = data.get('createdAt')
4747
self._environments = data.get('environments') if 'environments' in data else []
4848
self._workspace = data.get('workspace') if 'workspace' in data else {}
4949
self._type = data.get('type')

splitapiclient/resources/attribute.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def __init__(self, data=None, client=None):
2323
if not data:
2424
data = {}
2525
BaseResource.__init__(self, data.get('id'), client)
26+
self._id = data.get('id')
2627
self._traffic_type_id = data.get('trafficTypeId')
2728
self._display_name = data.get('displayName')
2829
self._description = data.get('description')

splitapiclient/resources/change_request.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ def __init__(self, data=None, client=None):
9090
self._comment = data.get('comment') if 'comment' in data else ''
9191
self._split = data.get('split') if 'split' in data else {}
9292
self._segment = data.get('segment') if 'segment' in data else {}
93+
self._operationType = data.get('operationType') if 'operationType' in data else ''
9394
self._environment = data.get('environment')
9495
self._approvers = []
9596
if 'approvers' in data:

splitapiclient/resources/matcher.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def __init__(self, data=None):
3232
self._type = data.get('type') if 'type' in data else ""
3333
self._attribute = data.get('attribute') if 'attribute' in data else ""
3434
self._string = data.get('string') if 'string' in data else ""
35-
self._boolean = data.get('bool') if 'bool' in data else ""
35+
self._bool = data.get('bool') if 'bool' in data else ""
3636
self._strings = []
3737
if 'strings' in data:
3838
for item in data.get('strings'):
@@ -52,8 +52,8 @@ def export_dict(self):
5252
result['attribute'] = self._attribute
5353
if self._string != "":
5454
result['string'] = self._string
55-
if self._boolean != "":
56-
result['bool'] = self._boolean
55+
if self._bool != "":
56+
result['bool'] = self._bool
5757
if len(self._strings)>0:
5858
result['strings'] = self._strings
5959
if self._number != "":

splitapiclient/resources/segment_definition.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def __init__(self, data=None, client=None):
3131
self._name = data.get('name')
3232
self._environment = data.get('environment')
3333
self._trafficType = TrafficType(data.get('trafficType')) if 'trafficType' in data else {}
34-
self._creationTime = data.get('creationTime')
34+
self._creationTime = data.get('creationTime') if 'creationTime' in data else 0
3535

3636
@property
3737
def name(self):
@@ -103,3 +103,29 @@ def remove_keys(self, json_data, apiclient=None):
103103
imc = require_client('SegmentDefinition', self._client, apiclient)
104104
return imc.remove_keys(self._name, self._environment['id'], json_data)
105105

106+
def submit_change_request(self, keys, operation_type, title, comment, approvers, rollout_status_id, workspace_id, apiclient=None):
107+
'''
108+
submit a change request for segment definition
109+
110+
:param data: ChangeRequest
111+
:param apiclient: If this instance wasn't returned by the client,
112+
the IdentifyClient instance should be passed in order to perform the
113+
http call
114+
115+
:returns: ChangeRequest object
116+
:rtype: ChangeRequest
117+
'''
118+
data = {
119+
'segment': {
120+
'name':self._name,
121+
'keys': keys,
122+
},
123+
'operationType': operation_type,
124+
'title': title,
125+
'comment': comment,
126+
'approvers': approvers,
127+
}
128+
if rollout_status_id is not None:
129+
data['rolloutStatus'] = {'id': rollout_status_id}
130+
imc = require_client('ChangeRequest', self._client, apiclient)
131+
return imc.submit_change_request(self._environment['id'], workspace_id, data)

splitapiclient/resources/split.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ def __init__(self, data=None, workspace_id=None, client=None):
3434
self._description = data.get('description')
3535
self._trafficType = TrafficType(data.get('trafficType')) if 'trafficType' in data else {}
3636
self._workspace_id = workspace_id
37-
37+
self._creationTime = data.get('creationTime') if 'creationTime' in data else 0
38+
self._tags = data.get('tags') if 'tags' in data else []
39+
self._id = data.get('id') if 'id' in data else None
40+
self._rolloutStatus = data.get('rolloutStatus') if 'rolloutStatus' in data else {}
41+
self._rolloutStatusTimestamp = data.get('rolloutStatusTimestamp') if 'rolloutStatusTimestamp' in data else 0
42+
3843
@property
3944
def name(self):
4045
return self._name

splitapiclient/resources/split_definition.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,15 @@ def __init__(self, data=None, environment_id=None, workspace_id=None, client=Non
6868
data = {}
6969
BaseResource.__init__(self, data.get('name'), client)
7070
self._name = data.get('name')
71-
self._trafficType = TrafficType(data.get('trafficType')) if 'trafficType' in data else {}
7271
self._environment = Environment(data.get('environment')) if 'environment' in data else {}
72+
self._trafficType = TrafficType(data.get('trafficType')) if 'trafficType' in data else {}
7373
self._treatments = []
74+
self._killed = data.get('killed') if 'killed' in data else False
7475
if 'treatments' in data:
7576
for item in data.get('treatments'):
7677
self._treatments.append(Treatment(item))
78+
self._default_treatment = data.get('defaultTreatment') if 'defaultTreatment' in data else ''
79+
self._traffic_allocation = data.get('trafficAllocation') if 'trafficAllocation' in data else 0
7780
self._rules = []
7881
for item in data.get('rules'):
7982
self._rules.append(Rule(item))
@@ -164,5 +167,5 @@ def submit_change_request(self, definition, operation_type, title, comment, appr
164167
if rollout_status_id is not None:
165168
data['rolloutStatus'] = {'id': rollout_status_id}
166169
imc = require_client('ChangeRequest', self._client, apiclient)
167-
return imc.submit_change_request(self._name, self._environment_id, self._workspace_id, data)
170+
return imc.submit_change_request(self._environment_id, self._workspace_id, data)
168171

0 commit comments

Comments
 (0)