GithubHelp home page GithubHelp logo

scaleio-py's People

Contributors

swevm avatar wallnerryan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

scaleio-py's Issues

Logging should be configurable

In line https://github.com/swevm/scaleio-py/blob/master/scaleiopy/scaleio.py#L442 the logger is initialized to DEBUG.

A suggestion would be to make this configurable during creation of the ScaleIO object, via an attribute like debug=True or verbose=True

Configuring logging consistently will help.

Also even if we grab the the logger with getLogger and set the log level, various print statements as like print "*** DEBUG Login() ***" exist like on line https://github.com/wallnerryan/scaleio-py/blob/master/scaleiopy/scaleio.py#L447. These should be set to logger statements to help with consistency.

Thoughts? I can create a pull request for this if you'd like.

@swevm

output as json

Hi,

Ease for any just put out what you get, then any who will use you code can make decision with output format better: json, xml, or just re-parse to k:v plain text.

Example:

    @property                                                   
    def get_json_system(self):                                  
        self._check_login()                                     
        response = self._do_get("{}/{}".format(self._api_url, "types/System/instances")).json()
        return response                                         

    def get_json_system_relationships_statistics(self, id):
        self._check_login()
        response = self._do_get("{}/{}".format(self._api_url, "instances/System::" + id + "/relationships/Statistics")).json()
        return response
system_id = sio.get_json_system[0]['id']
totalwritebwc = sio.get_json_system_relationships_statistics(system_id)['totalWriteBwc']
print json.dumps(totalwritebwc)

Result:

python /root/scio.py | jq
{
  "numOccured": 12612,
  "numSeconds": 5,
  "totalWeightInKb": 264807
}

requests 2.5.1 dependency

I've been testing this with requests==2.4.3 succesfully, is there a reason you specifically need 2.5.1?

If this is ok, would like to request to make the dep requests >= 2.4.3, <=2.5.1 ?

SIO API versions not returned correctly

For every login

self._api_version = None

is populated with current SIO API version number. There are differences between SIO 1.31 and 1.31 in terms of how some API methods are called. Additional parameters are attached to some returned JSON data as well which need to be handle correctly. Since 1.1 is returned for both .31 and .32 it makes it much harder to implement code that handle differences.
Values returned by /api/version:
1.0 for SIO 1.30
1.1 for SIO 1.31
1.1 for SIO 1.32

pep8

any interest in cleaning up with pep8 standards? Be happy to help.

 [51] → pep8 scaleiopy/scaleio.py
scaleiopy/scaleio.py:15:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:19:80: E501 line too long (82 > 79 characters)
scaleiopy/scaleio.py:28:80: E501 line too long (82 > 79 characters)
scaleiopy/scaleio.py:29:80: E501 line too long (101 > 79 characters)
scaleiopy/scaleio.py:34:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:35:80: E501 line too long (133 > 79 characters)
scaleiopy/scaleio.py:36:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:38:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:39:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:40:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:41:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:41:30: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:41:32: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:41:38: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:41:39: E262 inline comment should start with '# '
scaleiopy/scaleio.py:42:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:42:28: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:42:30: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:43:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:43:32: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:43:34: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:43:40: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:43:41: E262 inline comment should start with '# '
scaleiopy/scaleio.py:44:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:44:30: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:44:32: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:44:38: W291 trailing whitespace
scaleiopy/scaleio.py:45:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:45:28: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:45:30: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:45:38: E262 inline comment should start with '# '
scaleiopy/scaleio.py:46:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:46:26: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:46:28: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:46:34: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:46:80: E501 line too long (107 > 79 characters)
scaleiopy/scaleio.py:47:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:47:31: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:47:33: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:48:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:48:16: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:48:18: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:48:24: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:48:25: E262 inline comment should start with '# '
scaleiopy/scaleio.py:49:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:49:24: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:49:26: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:49:32: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:49:80: E501 line too long (148 > 79 characters)
scaleiopy/scaleio.py:50:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:50:28: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:50:30: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:50:36: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:51:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:51:26: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:51:28: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:51:34: W291 trailing whitespace
scaleiopy/scaleio.py:52:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:52:42: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:52:44: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:53:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:53:46: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:53:48: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:54:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:54:18: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:54:20: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:54:26: W291 trailing whitespace
scaleiopy/scaleio.py:55:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:55:13: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:55:15: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:55:21: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:55:80: E501 line too long (101 > 79 characters)
scaleiopy/scaleio.py:56:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:56:22: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:56:24: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:56:30: W291 trailing whitespace
scaleiopy/scaleio.py:57:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:57:24: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:57:26: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:58:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:58:31: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:58:33: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:58:39: W291 trailing whitespace
scaleiopy/scaleio.py:59:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:59:34: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:59:36: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:59:42: W291 trailing whitespace
scaleiopy/scaleio.py:60:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:60:34: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:60:36: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:61:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:61:25: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:61:27: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:61:33: W291 trailing whitespace
scaleiopy/scaleio.py:62:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:62:33: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:62:35: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:63:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:63:33: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:63:35: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:64:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:64:14: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:64:16: E251 unexpected spaces around keyword / parameter equals
scaleiopy/scaleio.py:65:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:66:5: E124 closing bracket does not match visual indentation
scaleiopy/scaleio.py:67:16: E225 missing whitespace around operator
scaleiopy/scaleio.py:68:18: E225 missing whitespace around operator
scaleiopy/scaleio.py:75:62: W291 trailing whitespace
scaleiopy/scaleio.py:82:53: W291 trailing whitespace
scaleiopy/scaleio.py:83:80: E501 line too long (86 > 79 characters)
scaleiopy/scaleio.py:84:80: E501 line too long (94 > 79 characters)
scaleiopy/scaleio.py:86:25: W291 trailing whitespace
scaleiopy/scaleio.py:87:44: W291 trailing whitespace
scaleiopy/scaleio.py:89:65: W291 trailing whitespace
scaleiopy/scaleio.py:97:48: E231 missing whitespace after ','
scaleiopy/scaleio.py:97:62: W291 trailing whitespace
scaleiopy/scaleio.py:98:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:100:5: E303 too many blank lines (2)
scaleiopy/scaleio.py:103:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:107:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:108:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:110:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:112:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:113:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:114:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:115:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:116:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:117:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:118:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:118:38: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:118:39: E262 inline comment should start with '# '
scaleiopy/scaleio.py:118:80: E501 line too long (113 > 79 characters)
scaleiopy/scaleio.py:119:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:119:40: W291 trailing whitespace
scaleiopy/scaleio.py:120:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:120:59: W291 trailing whitespace
scaleiopy/scaleio.py:121:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:121:61: W291 trailing whitespace
scaleiopy/scaleio.py:122:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:122:54: W291 trailing whitespace
scaleiopy/scaleio.py:123:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:124:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:124:57: W291 trailing whitespace
scaleiopy/scaleio.py:125:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:126:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:126:61: W291 trailing whitespace
scaleiopy/scaleio.py:127:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:128:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:129:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:130:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:131:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:131:33: W291 trailing whitespace
scaleiopy/scaleio.py:132:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:133:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:133:25: W291 trailing whitespace
scaleiopy/scaleio.py:134:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:134:38: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:134:39: E262 inline comment should start with '# '
scaleiopy/scaleio.py:135:5: E124 closing bracket does not match visual indentation
scaleiopy/scaleio.py:136:16: E225 missing whitespace around operator
scaleiopy/scaleio.py:137:18: E225 missing whitespace around operator
scaleiopy/scaleio.py:141:30: E225 missing whitespace around operator
scaleiopy/scaleio.py:142:29: E225 missing whitespace around operator
scaleiopy/scaleio.py:143:31: E225 missing whitespace around operator
scaleiopy/scaleio.py:144:40: E225 missing whitespace around operator
scaleiopy/scaleio.py:144:64: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:144:65: E262 inline comment should start with '# '
scaleiopy/scaleio.py:144:80: E501 line too long (139 > 79 characters)
scaleiopy/scaleio.py:145:40: E225 missing whitespace around operator
scaleiopy/scaleio.py:146:67: E225 missing whitespace around operator
scaleiopy/scaleio.py:146:80: E501 line too long (111 > 79 characters)
scaleiopy/scaleio.py:146:112: W291 trailing whitespace
scaleiopy/scaleio.py:147:68: E225 missing whitespace around operator
scaleiopy/scaleio.py:147:80: E501 line too long (114 > 79 characters)
scaleiopy/scaleio.py:147:115: W291 trailing whitespace
scaleiopy/scaleio.py:148:62: E225 missing whitespace around operator
scaleiopy/scaleio.py:148:80: E501 line too long (101 > 79 characters)
scaleiopy/scaleio.py:148:102: W291 trailing whitespace
scaleiopy/scaleio.py:149:63: E225 missing whitespace around operator
scaleiopy/scaleio.py:149:80: E501 line too long (104 > 79 characters)
scaleiopy/scaleio.py:150:63: E225 missing whitespace around operator
scaleiopy/scaleio.py:150:80: E501 line too long (105 > 79 characters)
scaleiopy/scaleio.py:150:106: W291 trailing whitespace
scaleiopy/scaleio.py:151:65: E225 missing whitespace around operator
scaleiopy/scaleio.py:151:80: E501 line too long (109 > 79 characters)
scaleiopy/scaleio.py:152:69: E225 missing whitespace around operator
scaleiopy/scaleio.py:152:80: E501 line too long (115 > 79 characters)
scaleiopy/scaleio.py:152:116: W291 trailing whitespace
scaleiopy/scaleio.py:153:69: E225 missing whitespace around operator
scaleiopy/scaleio.py:153:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:154:54: E225 missing whitespace around operator
scaleiopy/scaleio.py:154:80: E501 line too long (88 > 79 characters)
scaleiopy/scaleio.py:155:57: E225 missing whitespace around operator
scaleiopy/scaleio.py:155:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:156:62: E225 missing whitespace around operator
scaleiopy/scaleio.py:156:80: E501 line too long (104 > 79 characters)
scaleiopy/scaleio.py:157:34: E225 missing whitespace around operator
scaleiopy/scaleio.py:157:53: W291 trailing whitespace
scaleiopy/scaleio.py:158:34: E225 missing whitespace around operator
scaleiopy/scaleio.py:159:26: E225 missing whitespace around operator
scaleiopy/scaleio.py:159:37: W291 trailing whitespace
scaleiopy/scaleio.py:160:41: E225 missing whitespace around operator
scaleiopy/scaleio.py:160:66: W291 trailing whitespace
scaleiopy/scaleio.py:161:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:165:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:170:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:172:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:174:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:175:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:176:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:177:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:178:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:179:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:180:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:181:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:182:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:183:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:184:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:185:5: E124 closing bracket does not match visual indentation
scaleiopy/scaleio.py:186:16: E225 missing whitespace around operator
scaleiopy/scaleio.py:190:18: E225 missing whitespace around operator
scaleiopy/scaleio.py:191:46: E225 missing whitespace around operator
scaleiopy/scaleio.py:192:43: E225 missing whitespace around operator
scaleiopy/scaleio.py:193:37: E225 missing whitespace around operator
scaleiopy/scaleio.py:194:48: E225 missing whitespace around operator
scaleiopy/scaleio.py:194:80: E501 line too long (81 > 79 characters)
scaleiopy/scaleio.py:195:45: E225 missing whitespace around operator
scaleiopy/scaleio.py:196:46: E225 missing whitespace around operator
scaleiopy/scaleio.py:197:43: E225 missing whitespace around operator
scaleiopy/scaleio.py:198:23: E225 missing whitespace around operator
scaleiopy/scaleio.py:201:5: E303 too many blank lines (2)
scaleiopy/scaleio.py:204:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:209:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:211:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:228:5: E124 closing bracket does not match visual indentation
scaleiopy/scaleio.py:234:34: E225 missing whitespace around operator
scaleiopy/scaleio.py:235:27: E225 missing whitespace around operator
scaleiopy/scaleio.py:236:16: E225 missing whitespace around operator
scaleiopy/scaleio.py:249:5: E303 too many blank lines (2)
scaleiopy/scaleio.py:252:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:257:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:259:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:270:5: E124 closing bracket does not match visual indentation
scaleiopy/scaleio.py:282:5: E303 too many blank lines (3)
scaleiopy/scaleio.py:285:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:290:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:292:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:315:49: E231 missing whitespace after ','
scaleiopy/scaleio.py:320:48: E231 missing whitespace after ','
scaleiopy/scaleio.py:332:23: E225 missing whitespace around operator
scaleiopy/scaleio.py:337:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:341:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:342:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:344:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:346:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:347:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:348:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:349:9: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:351:5: E124 closing bracket does not match visual indentation
scaleiopy/scaleio.py:352:16: E225 missing whitespace around operator
scaleiopy/scaleio.py:353:18: E225 missing whitespace around operator
scaleiopy/scaleio.py:354:32: E225 missing whitespace around operator
scaleiopy/scaleio.py:357:48: E231 missing whitespace after ','
scaleiopy/scaleio.py:362:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:366:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:367:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:370:80: E501 line too long (169 > 79 characters)
scaleiopy/scaleio.py:371:80: E501 line too long (114 > 79 characters)
scaleiopy/scaleio.py:372:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:376:80: E501 line too long (84 > 79 characters)
scaleiopy/scaleio.py:380:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:382:80: E501 line too long (100 > 79 characters)
scaleiopy/scaleio.py:383:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:386:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:388:31: E203 whitespace before ':'
scaleiopy/scaleio.py:401:50: E231 missing whitespace after ','
scaleiopy/scaleio.py:401:58: E231 missing whitespace after ','
scaleiopy/scaleio.py:406:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:416:80: E501 line too long (85 > 79 characters)
scaleiopy/scaleio.py:421:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:423:80: E501 line too long (113 > 79 characters)
scaleiopy/scaleio.py:432:1: E302 expected 2 blank lines, found 1
scaleiopy/scaleio.py:434:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:436:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:444:80: E501 line too long (87 > 79 characters)
scaleiopy/scaleio.py:462:80: E501 line too long (105 > 79 characters)
scaleiopy/scaleio.py:462:87: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:466:53: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:466:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:467:80: E501 line too long (102 > 79 characters)
scaleiopy/scaleio.py:468:13: E128 continuation line under-indented for visual indent
scaleiopy/scaleio.py:496:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:499:80: E501 line too long (83 > 79 characters)
scaleiopy/scaleio.py:500:80: E501 line too long (95 > 79 characters)
scaleiopy/scaleio.py:502:41: E231 missing whitespace after ','
scaleiopy/scaleio.py:510:80: E501 line too long (88 > 79 characters)
scaleiopy/scaleio.py:514:80: E501 line too long (84 > 79 characters)
scaleiopy/scaleio.py:515:50: E231 missing whitespace after ','
scaleiopy/scaleio.py:524:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:525:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:531:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:532:80: E501 line too long (114 > 79 characters)
scaleiopy/scaleio.py:533:50: E231 missing whitespace after ':'
scaleiopy/scaleio.py:533:69: E231 missing whitespace after ','
scaleiopy/scaleio.py:533:79: E231 missing whitespace after ':'
scaleiopy/scaleio.py:533:80: E501 line too long (85 > 79 characters)
scaleiopy/scaleio.py:535:13: E265 block comment should start with '# '
scaleiopy/scaleio.py:535:80: E501 line too long (84 > 79 characters)
scaleiopy/scaleio.py:538:80: E501 line too long (90 > 79 characters)
scaleiopy/scaleio.py:538:91: W291 trailing whitespace
scaleiopy/scaleio.py:541:80: E501 line too long (94 > 79 characters)
scaleiopy/scaleio.py:542:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:542:94: W291 trailing whitespace
scaleiopy/scaleio.py:543:80: E501 line too long (92 > 79 characters)
scaleiopy/scaleio.py:545:80: E501 line too long (86 > 79 characters)
scaleiopy/scaleio.py:553:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:554:80: E501 line too long (114 > 79 characters)
scaleiopy/scaleio.py:555:50: E231 missing whitespace after ':'
scaleiopy/scaleio.py:555:69: E231 missing whitespace after ','
scaleiopy/scaleio.py:555:79: E231 missing whitespace after ':'
scaleiopy/scaleio.py:555:80: E501 line too long (85 > 79 characters)
scaleiopy/scaleio.py:557:80: E501 line too long (89 > 79 characters)
scaleiopy/scaleio.py:560:80: E501 line too long (91 > 79 characters)
scaleiopy/scaleio.py:560:92: W291 trailing whitespace
scaleiopy/scaleio.py:563:80: E501 line too long (95 > 79 characters)
scaleiopy/scaleio.py:564:80: E501 line too long (94 > 79 characters)
scaleiopy/scaleio.py:564:95: W291 trailing whitespace
scaleiopy/scaleio.py:565:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:567:80: E501 line too long (87 > 79 characters)
scaleiopy/scaleio.py:573:80: E501 line too long (102 > 79 characters)
scaleiopy/scaleio.py:578:80: E501 line too long (95 > 79 characters)
scaleiopy/scaleio.py:587:80: E501 line too long (102 > 79 characters)
scaleiopy/scaleio.py:592:80: E501 line too long (100 > 79 characters)
scaleiopy/scaleio.py:592:101: W291 trailing whitespace
scaleiopy/scaleio.py:595:80: E501 line too long (89 > 79 characters)
scaleiopy/scaleio.py:597:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:601:80: E501 line too long (105 > 79 characters)
scaleiopy/scaleio.py:606:80: E501 line too long (92 > 79 characters)
scaleiopy/scaleio.py:606:93: W291 trailing whitespace
scaleiopy/scaleio.py:617:80: E501 line too long (105 > 79 characters)
scaleiopy/scaleio.py:622:61: E231 missing whitespace after ','
scaleiopy/scaleio.py:622:80: E501 line too long (91 > 79 characters)
scaleiopy/scaleio.py:633:80: E501 line too long (108 > 79 characters)
scaleiopy/scaleio.py:638:80: E501 line too long (95 > 79 characters)
scaleiopy/scaleio.py:647:5: E303 too many blank lines (2)
scaleiopy/scaleio.py:653:80: E501 line too long (105 > 79 characters)
scaleiopy/scaleio.py:665:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:666:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:667:80: E501 line too long (119 > 79 characters)
scaleiopy/scaleio.py:668:80: E501 line too long (116 > 79 characters)
scaleiopy/scaleio.py:672:80: E501 line too long (97 > 79 characters)
scaleiopy/scaleio.py:682:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:685:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:691:80: E501 line too long (131 > 79 characters)
scaleiopy/scaleio.py:697:23: W291 trailing whitespace
scaleiopy/scaleio.py:698:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:699:29: E231 missing whitespace after ','
scaleiopy/scaleio.py:717:27: E231 missing whitespace after ','
scaleiopy/scaleio.py:726:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:727:27: E231 missing whitespace after ','
scaleiopy/scaleio.py:753:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:773:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:785:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:787:43: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:790:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:797:34: E231 missing whitespace after ','
scaleiopy/scaleio.py:802:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:805:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:808:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:815:80: E501 line too long (88 > 79 characters)
scaleiopy/scaleio.py:816:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:817:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:820:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:823:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:827:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:831:28: W291 trailing whitespace
scaleiopy/scaleio.py:832:80: E501 line too long (117 > 79 characters)
scaleiopy/scaleio.py:834:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:838:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:845:80: E501 line too long (143 > 79 characters)
scaleiopy/scaleio.py:847:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:851:36: W291 trailing whitespace
scaleiopy/scaleio.py:856:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:857:80: E501 line too long (174 > 79 characters)
scaleiopy/scaleio.py:858:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:859:80: E501 line too long (108 > 79 characters)
scaleiopy/scaleio.py:861:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:866:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:867:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:873:80: E501 line too long (91 > 79 characters)
scaleiopy/scaleio.py:874:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:876:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:877:48: E231 missing whitespace after ':'
scaleiopy/scaleio.py:879:80: E501 line too long (171 > 79 characters)
scaleiopy/scaleio.py:880:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:881:80: E501 line too long (94 > 79 characters)
scaleiopy/scaleio.py:883:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:884:80: E501 line too long (98 > 79 characters)
scaleiopy/scaleio.py:886:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:887:28: W291 trailing whitespace
scaleiopy/scaleio.py:892:80: E501 line too long (137 > 79 characters)
scaleiopy/scaleio.py:893:80: E501 line too long (106 > 79 characters)
scaleiopy/scaleio.py:898:30: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:899:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:904:51: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:905:80: E501 line too long (108 > 79 characters)
scaleiopy/scaleio.py:907:80: E501 line too long (103 > 79 characters)
scaleiopy/scaleio.py:911:80: E501 line too long (142 > 79 characters)
scaleiopy/scaleio.py:913:80: E501 line too long (87 > 79 characters)
scaleiopy/scaleio.py:915:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:916:28: W291 trailing whitespace
scaleiopy/scaleio.py:921:80: E501 line too long (137 > 79 characters)
scaleiopy/scaleio.py:922:80: E501 line too long (106 > 79 characters)
scaleiopy/scaleio.py:927:30: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:928:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:933:51: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:934:80: E501 line too long (108 > 79 characters)
scaleiopy/scaleio.py:936:80: E501 line too long (103 > 79 characters)
scaleiopy/scaleio.py:946:80: E501 line too long (99 > 79 characters)
scaleiopy/scaleio.py:947:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:948:23: E201 whitespace after '{'
scaleiopy/scaleio.py:948:34: E203 whitespace before ':'
scaleiopy/scaleio.py:948:50: E202 whitespace before '}'
scaleiopy/scaleio.py:950:80: E501 line too long (104 > 79 characters)
scaleiopy/scaleio.py:953:80: E501 line too long (95 > 79 characters)
scaleiopy/scaleio.py:955:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:960:30: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:963:80: E501 line too long (114 > 79 characters)
scaleiopy/scaleio.py:964:80: E501 line too long (152 > 79 characters)
scaleiopy/scaleio.py:966:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:969:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:976:30: E712 comparison to True should be 'if cond is True:' or 'if cond:'
scaleiopy/scaleio.py:982:80: E501 line too long (160 > 79 characters)
scaleiopy/scaleio.py:984:80: E501 line too long (100 > 79 characters)
scaleiopy/scaleio.py:989:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:990:80: E501 line too long (114 > 79 characters)
scaleiopy/scaleio.py:994:26: E225 missing whitespace around operator
scaleiopy/scaleio.py:999:80: E501 line too long (86 > 79 characters)
scaleiopy/scaleio.py:1001:80: E501 line too long (108 > 79 characters)
scaleiopy/scaleio.py:1005:80: E501 line too long (93 > 79 characters)
scaleiopy/scaleio.py:1007:80: E501 line too long (100 > 79 characters)
scaleiopy/scaleio.py:1009:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:1013:80: E501 line too long (151 > 79 characters)
scaleiopy/scaleio.py:1015:80: E501 line too long (92 > 79 characters)
scaleiopy/scaleio.py:1017:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1019:47: W291 trailing whitespace
scaleiopy/scaleio.py:1021:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:1022:28: W291 trailing whitespace
scaleiopy/scaleio.py:1023:80: E501 line too long (118 > 79 characters)
scaleiopy/scaleio.py:1023:119: W291 trailing whitespace
scaleiopy/scaleio.py:1024:24: W291 trailing whitespace
scaleiopy/scaleio.py:1026:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1029:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:1033:80: E501 line too long (137 > 79 characters)
scaleiopy/scaleio.py:1033:138: W291 trailing whitespace
scaleiopy/scaleio.py:1038:80: E501 line too long (80 > 79 characters)
scaleiopy/scaleio.py:1041:80: E501 line too long (137 > 79 characters)
scaleiopy/scaleio.py:1041:138: W291 trailing whitespace
scaleiopy/scaleio.py:1049:80: E501 line too long (160 > 79 characters)
scaleiopy/scaleio.py:1049:161: W291 trailing whitespace
scaleiopy/scaleio.py:1052:9: E265 block comment should start with '# '
scaleiopy/scaleio.py:1052:80: E501 line too long (161 > 79 characters)
scaleiopy/scaleio.py:1052:162: W291 trailing whitespace
scaleiopy/scaleio.py:1053:24: W291 trailing whitespace
scaleiopy/scaleio.py:1054:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1057:80: E501 line too long (118 > 79 characters)
scaleiopy/scaleio.py:1057:119: W291 trailing whitespace
scaleiopy/scaleio.py:1061:80: E501 line too long (103 > 79 characters)
scaleiopy/scaleio.py:1062:10: W291 trailing whitespace
scaleiopy/scaleio.py:1063:28: W291 trailing whitespace
scaleiopy/scaleio.py:1065:80: E501 line too long (113 > 79 characters)
scaleiopy/scaleio.py:1070:80: E501 line too long (118 > 79 characters)
scaleiopy/scaleio.py:1070:119: W291 trailing whitespace
scaleiopy/scaleio.py:1071:24: W291 trailing whitespace
scaleiopy/scaleio.py:1072:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1075:80: E501 line too long (103 > 79 characters)
scaleiopy/scaleio.py:1076:10: W291 trailing whitespace
scaleiopy/scaleio.py:1077:28: W291 trailing whitespace
scaleiopy/scaleio.py:1079:80: E501 line too long (113 > 79 characters)
scaleiopy/scaleio.py:1081:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1082:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1083:5: E303 too many blank lines (2)
scaleiopy/scaleio.py:1099:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1100:30: E231 missing whitespace after ','
scaleiopy/scaleio.py:1102:80: E501 line too long (89 > 79 characters)
scaleiopy/scaleio.py:1104:80: E501 line too long (104 > 79 characters)
scaleiopy/scaleio.py:1106:1: W293 blank line contains whitespace
scaleiopy/scaleio.py:1109:33: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:1110:54: E261 at least two spaces before inline comment
scaleiopy/scaleio.py:1110:80: E501 line too long (90 > 79 characters)
scaleiopy/scaleio.py:1115:80: E501 line too long (121 > 79 characters)
scaleiopy/scaleio.py:1119:56: E231 missing whitespace after ','
scaleiopy/scaleio.py:1119:68: E231 missing whitespace after ','
scaleiopy/scaleio.py:1119:80: E231 missing whitespace after ','
scaleiopy/scaleio.py:1119:80: E501 line too long (194 > 79 characters)
scaleiopy/scaleio.py:1119:98: E261 at least two spaces before inline comment

_do_post() errors

in the function _do_post() at https://github.com/wallnerryan/scaleio-py/blob/master/scaleiopy/scaleio.py#L497 its hard to understand any error the happens in the stack.

For instance, if we see a runtime error like:

ERROR scaleio:_do_post | _do_post() - HTTP response error, data: {"message":"Only a single SDC may be mapped to this volume at a time","httpStatusCode":500,"errorCode":306}

It is impossible to know that by calling map_volume_to_sdc() because we don't get the response back. My suggestion here is to log the error, but return the response to let the client decipher the errors. Or to have a standard set of errors like CannotMapMultpleSdcsError for the one above, and return the error rather than raise which ends the execution.

again happy to help, but ran into the above situation where all I can get back is _do_post() - Communication error with ScaleIO gateway in a snippet like this:

>>> try:
...     resp = (sio.map_volume_to_sdc(sio.get_volume_by_name('testvol001'), sio.get_sdc_by_ip('192.168.50.12')))
... except Exception as e:
...     print e

@swevm

Create Volume do not work in ScaleIO 1.32

Example code, create_map-volume.py do not work with ScaleIO 1.32. The error message say StoragePoolId is needed to create a Volume in 1.32. Worked fine in 1.31 with specifying only ProtectionDomainID.
I wonder if there´s a list of API call that have changed in 1.32?
Most likely adding StoragePoolId to API calls result in 1.31 and 1.32 working.

Error message:
earth:examples swevm$ python create_map-volume.py 192.168.102.12 admin Scaleio123 testvol01 default
2015-06-06 19:35:29,825: ERROR scaleio:_do_post | _do_post() - HTTP response error: 400
2015-06-06 19:35:29,825: ERROR scaleio:_do_post | _do_post() - HTTP response error, data: {"message":"Request message is not valid: The following parameter(s) must be part of the request body: storagePoolId.","httpStatusCode":400,"errorCode":0}
2015-06-06 19:35:29,826: ERROR scaleio:_do_post | _do_post() - Unhandled Error Occurred: cannot concatenate 'str' and 'int' objects
Traceback (most recent call last):
File "create_map-volume.py", line 13, in
sio.create_volume(sys.argv[4], 8192, sio.get_pd_by_name(sys.argv[5]), mapAll=True)
File "build/bdist.macosx-10.10-intel/egg/scaleiopy/scaleio.py", line 1132, in create_volume
File "build/bdist.macosx-10.10-intel/egg/scaleiopy/scaleio.py", line 605, in _do_post
RuntimeError: _do_post() - Communication error with ScaleIO gateway

Cannot delete single SDC mapping if mappedToAll is True

Is not possible to remove a single mapping for a Volume if it have been mapped to all SDCs.
Not sure if this should be considered a bug or by design in SIO.

workaround:

  • Get list of all SDCs
  • Remove the SDC you want to unmap from the list
  • Map volume to list of SDCs
  • Change map_to_all_sdc parameter for volume to False

Not sure if this fixes the problem. Might cause a glitch for IO during unmap/remap. Need to test before implement

Unsupported Scaleio 1.3 Logins ... EMC ScaleIO Version: R1_30.426.0

have you succesfully used thi with 1.30? I i'm not sure there is a /api/login with 1.30, i am getting errors like below.

>>> from scaleiopy import scaleio
>>> sio = scaleio.ScaleIO("https://10.13.217.59/api","admin","Scaleio123",False, "ERROR")
>>> sio._login()
2015-06-02 10:41:59,481: ERROR scaleio:_login | Login error code: Not Found

I can however just use basic auth against the URL

curl -k --basic --user admin:Scaleio123 https://10.13.217.59:443/api/instances/Volume::4866dc8500000006
{"volumeType":"ThickProvisioned","mappingToAllSdcsEnabled":false,"mappedSdcInfo":[{"limitIops":0,"limitBwInMbps":0,"sdcId":"f530cf3700000000","sdcIp":"10.13.217.60"}],"sizeInKb":58720256,"mappedScsiInitiatorInfo":null,"isObfuscated":false,"consistencyGroupId":"0000000000000000","storagePoolId":"64d62fb200000002","ancestorVolumeId":"0000000000000000","vtreeId":"943b92b300000006","creationTime":1428436720,"name":"vol07","id":"4866dc8500000006","links":[{"rel":"self","href":"/api/instances/Volume::4866dc8500000006"},{"rel":"/api/Volume/relationship/Statistics","href":"/api/instances/Volume::4866dc8500000006/relationships/Statistics"},{"rel":"/api/parent/relationship/ancestorVolumeId","href":"/api/instances/Volume::0000000000000000"},{"rel":"/api/parent/relationship/vtreeId","href":"/api/instances/VTree::943b92b300000006"},{"rel":"/api/parent/relationship/storagePoolId","href":"/api/instances/StoragePool::64d62fb200000002"}]}

but not /login or api/login

(venv)[root@sclr059]# curl -k --basic --user admin:Scaleio123 https://10.13.217.59:443/api/login
{
  "message" : "Not Found",
  "httpStatusCode" : 404,
  "errorCode" : 0
}(venv)[root@sclr059]# curl -k --basic --user admin:Scaleio123 https://10.13.217.59:443/login
{
  "message" : "Not Found",
  "httpStatusCode" : 404,
  "errorCode" : 0
} 

Maybe we can bake in support?

api versions compatibility

Hi,

I try to use you code to make monitoring for ScaleIO API version 2.0 cluster and find big problems in code constructions and implementation. You miss flexibility and make very hard implementation for switching between API versions.

Example:

    def __init__(self,
        id=None,
        name=None,
        systemVersionName=None,
        primaryMdmActorIpList = None, #List
        primaryMdmActorPort = None,
        secondaryMdmActorIpList = None, #List
        secondaryMdmActorPort = None,.
        tiebreakerMdmIpList = None,  #List
        tiebreakerMdmPort = None, # This one is defined in ScaleIO 1.30 API, but seem not present in 1.31??
        tiebreakerMdmActorPort = None,
        mdmMode = None, #Single or Cluster
        mdmClusterState = None, # NotClustered or ClusteredNormal or ClusteredDegraded or ClusteredTiebreakerDown or ClusteredDegradedTiebreakerDown
        mdmManagementIpList = None, # List
        mdmManagementPort = None,.
        capacityAlertHighThresholdPercent = None,
        capacityAlertCriticalThresholdPercent = None,
        installId = None,.
        swid = None, # This one seem not to return anything. Its define din 1.30. What about 1.31????
        daysInstalled = None,.
        maxCapacityInGb = None,
        capacityTimeLeftInDays = None,.
        enterpriseFeaturesEnabled = None,.
        defaultIsVolumeObfuscated = None,
        isInitialLicense = None,.
        restrictedSdcModeEnabled = None,
        remoteReadOnlyLimitState = None,
        links = None,

You define all, nice, but we got more variables in new API version

        sdcSocketAllocationFailuresCounterParameters = None,
        cliPasswordAllowed = None,
        authenticationMethod = None,
        performanceParameters = None,
        sdcLongOperationsCounterParameters = None,
        sdcMdmNetworkDisconnectionsCounterParameters = None,
        managementClientSecureCommunicationEnabled = None,
        mdmToSdsPolicy = None,
        tlsVersion = None,
        currentProfilePerformanceParameters = None,
        mdmCluster = None,
        sdcMemoryAllocationFailuresCounterParameters = None,
        upgradeState = None,
        showGuid = None,
        sdcSdsNetworkDisconnectionsCounterParameters = None

In version 2.1 we can get on top +1, then +1.... and you always must add new..., better to implement exclusions and dynamically and recursive read all what you get from API. In this way you will need just create functions wrappers who adopt calls to oldest api version if some value are deprecated or renamed...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.