GithubHelp home page GithubHelp logo

clc-python-sdk's People

Contributors

ack avatar bjfelton avatar bmh2git avatar bradwilson avatar brianalbrecht avatar ckleban avatar davisein avatar efrenrey avatar keithresar avatar mikebeyer avatar popurisiva avatar robersantamaria avatar scottdensmore avatar tchughesiv avatar yongjiel avatar zulupro avatar

Stargazers

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

Watchers

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

clc-python-sdk's Issues

Raise exception with actual descriptive error if create_server (and other server action) fails

Currently, the sdk raises the below error when it fails to create or powers off server:

[2015-05-29 02:32:32,257: WARNING/Worker-1] Traceback (most recent call last):
File "/home/zenoss/zcomms/provisioner/provisioner.py", line 127, in create_instance
api_endpoint=CTL_ENDPOINT)
File "/home/zenoss/zcomms/utils/provisioner.py", line 99, in create_instance
description = machine_specs['Description']
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 471, in Create
'customFields': custom_fields, 'additionalDisks': additional_disks, 'ttl': ttl, 'packages': packages}))))
File "/usr/lib/python2.6/site-packages/clc/APIv2/queue.py", line 49, in init
if 'isQueued' in requests_lst: requests_lst = [requests_lst]
TypeError: argument of type 'NoneType' is not iterable
[2015-05-29 02:32:32,273: INFO/MainProcess] Received task:

Syntax error in clc/APIv2/server.py"

def get_events(self, evt):
import clc

File "/usr/lib/python2.6/site-packages/clc/init.py", line 20, in
import APIv2 as v2
File "/usr/lib/python2.6/site-packages/clc/APIv2/init.py", line 21, in
from clc.APIv2.server import Servers, Server
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 455
if type.lower() == "hyperscale" and storage_type.lower() != "hyperscale" raise(clc.CLCException("Invalid type/storage_type combo"))

clc.v2.Server().SetCPU() returns error

Appears that when trying to set only one server attribute the change function is requiring other fields such as memory.

clc.APIFailedResponse: Response code 400. The data for memory does not validate. Explanation: memory value is required.

Update CLI to take server IP as an argument

The V2 API allows you to specify the desired IP address when creating a server, would like to have the CLI include the ability to pass this as an option to "clc server create"

Group-estimate does not work on CLI

Good monring,
The group-estimate option does not seem to work anymore, please see below:
C:\Python27\Scripts>clc-cli billing group-estimate --alias CCVA --location CA2 --group GavinTest
/ Reading clc.ini
x Exiting due to error: 'module' object has no attribute 'Group'
Is this normal or it is a bug?
Thanks
Gavin

The create server call is not giving proper reason for failure

By debugging, it seems reason for create server failure is "Memory limit exceeded", but it is returning
TypeError: init() takes at most 3 arguments (4 given) error.

(Pdb) p r
<Response [400]>
(Pdb) p r.dict
{'cookies': <<class 'requests.cookies.RequestsCookieJar'>[]>, '_content': '{"message":"Memory limit exceeded -> available: 2, requested: 4"}', 'headers': {'content-length': '65', 'expires': '-1', 'pragma': 'no-cache', 'cache-control': 'no-cache', 'date': 'Tue, 07 Apr 2015 21:16:23 GMT', 'content-type': 'application/json; charset=utf-8'}, 'url': u'https://api.ctl.io/v2/servers/AVNI', 'status_code': 400, '_content_consumed': True, 'encoding': 'utf-8', 'request': <PreparedRequest [POST]>, 'connection': <requests.adapters.HTTPAdapter object at 0x2447c90>, 'elapsed': datetime.timedelta(0, 8, 175386), 'raw': <requests.packages.urllib3.response.HTTPResponse object at 0x2451450>, 'reason': 'Bad Request', 'history': []}
(Pdb) c

ShutDown, PowerOff, PowerOn, and Pause generate exceptions if the server is already in the desired state

When the methods ShutDown, PowerOff, PowerOn, and Pause are used against a server that is already in the desired state, they generate a KeyError exception. All methods generate the same exception. In the following example, I was working with an interactive shell on a server that started off. Server.Reset() behaves as expected, generating an exception describing the error.

As a temporary workaround, I can have my program catch a KeyError in addition to the clc.CLCException error handling and assume that the two represent the same problem, however, this should be fixed.

>>> server.powerState
u'stopped'
>>> server.PowerOn()
<clc.APIv2.queue.Requests object at 0x6ffff321e50>
>>> server.Refresh()
>>> server.powerState
u'started'
>>> server.PowerOn()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 368, in PowerOn
    def PowerOn(self):  return(self._Operation('powerOn'))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 357, in _Operation
    session=self.session))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/queue.py", line 95, in __init__
    if r['errorMessage'] == "The server already in desired state.":  pass
KeyError: 'errorMessage'
>>> server.Pause()
<clc.APIv2.queue.Requests object at 0x6ffff321f10>
>>> server.Refresh()
>>> server.powerState
u'paused'
>>> server.Pause()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 364, in Pause
    def Pause(self):  return(self._Operation('pause'))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 357, in _Operation
    session=self.session))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/queue.py", line 95, in __init__
    if r['errorMessage'] == "The server already in desired state.":  pass
KeyError: 'errorMessage'
>>> server.ShutDown()
<clc.APIv2.queue.Requests object at 0x6ffffe6f250>
>>> server.Refresh()
>>> server.powerState
u'stopped'
>>> server.ShutDown()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 365, in ShutDown
    def ShutDown(self):  return(self._Operation('shutDown'))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 357, in _Operation
    session=self.session))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/queue.py", line 95, in __init__
    if r['errorMessage'] == "The server already in desired state.":  pass
KeyError: 'errorMessage'
>>> server.PowerOff()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 369, in PowerOff
    def PowerOff(self):  return(self._Operation('powerOff'))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 357, in _Operation
    session=self.session))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/queue.py", line 95, in __init__
    if r['errorMessage'] == "The server already in desired state.":  pass
KeyError: 'errorMessage'
>>> server.Reset()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 367, in Reset
    def Reset(self):  return(self._Operation('reset'))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/server.py", line 357, in _Operation
    session=self.session))
  File "/usr/lib/python2.7/site-packages/clc/APIv2/queue.py", line 101, in __init__
    raise(clc.CLCException("%s '%s' not added to queue: %s" % (context_key,context_val,r['errorMessage'])))
clc.CLCException: server '***REDACTED***' not added to queue: The operation cannot be queued for a powered off server.

Python 3 support

Would it be possible to update this code base to be compatible with Python 3?

I tried installing this module via both pip and git, and received this same error. I am running Python 3.6.1 on Cygwin and 3.5.2 on Ubuntu.

Traceback (most recent call last):
  File "my-file.py", line 1, in <module>
    import clc
  File "/usr/lib/python3.6/site-packages/clc_sdk-2.46-py3.6.egg/clc/__init__.py", line 19, in <module>
ModuleNotFoundError: No module named 'APIv1'

networks list showing incorrect data for location SG1

SG1 is showing data that actually belongs to a different datacenter (VA1) but not all data centers. See below as UC1 does not show this behavior

# clc networks list --alias XXXXX --location SG1
✔  Logged into v1 API
✔  Networks successfully queried.
+----------------------+----------------------+--------------+
| Name                 | Description          | Gateway      |
+----------------------+----------------------+--------------+
| vlan_XXXX_XX.XXX.208 | vlan_XXXX_XX.XXX.208 | XX.XXX.208.1 |
| vlan_XXXX_XX.XXX.216 | vlan_XXXX_XX.XXX.216 | XX.XXX.216.1 |
| vlan_XXXX_XX.XXX.4   | vlan_XXXX_XX.XXX.4   | XX.XXX.4.1   |
| vlan_XXXX_XX.XXX.5   | vlan_XXXX_XX.XXX.5   | XX.XXX.5.1   |
+----------------------+----------------------+--------------+
# clc networks list --alias XXXXX --location VA1
✔  Logged into v1 API
✔  Networks successfully queried.
+----------------------+----------------------+--------------+
| Name                 | Description          | Gateway      |
+----------------------+----------------------+--------------+
| vlan_XXXX_XX.XXX.208 | vlan_XXXX_XX.XXX.208 | XX.XXX.208.1 |
| vlan_XXXX_XX.XXX.216 | vlan_XXXX_XX.XXX.216 | XX.XXX.216.1 |
| vlan_XXXX_XX.XXX.4   | vlan_XXXX_XX.XXX.4   | XX.XXX.4.1   |
| vlan_XXXX_XX.XXX.5   | vlan_XXXX_XX.XXX.5   | XX.XXX.5.1   |
+----------------------+----------------------+--------------+
#clc networks list --alias XXXXX --location UC1
✔  Logged into v1 API
✔  Networks successfully queried.
+--------------------+--------------------+-------------+
| Name               | Description        | Gateway     |
+--------------------+--------------------+-------------+
| vlan_XXX_XXX.XX.48 | vlan_XXX_XX.XXX.48 | XX.XXX.XX.1 |
+--------------------+--------------------+-------------+

maximum recursion depth exceeded while calling a Python object

The exception occurs in the second to the last line of the snippet below. I have actually used server_obj.status before but the same max recursion exception occurred. Note, however, that the exception happens "randomly".

Code:

    count = 0
    g=clc.v2.Group(group, alias=account)
    servers=g.Servers().servers_lst
    for s in servers:
        if not re.search(r'ZNODE|MASTR', s):
            continue
        if s.upper() in save:
            continue
        try:
            server_obj = clc.v2.Server(s, alias=account)
        except:
            continue
        if server_obj.data['status'] != 'active':
            continue

Exception:

...
File "/home/zenoss/zcomms/utils/provisioner.py", line 257, in cleanup_zgroup
if server_obj.data['status'] != 'active':
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 217, in __getattr
if key in self.data: return(self.data[key])
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 217, in getattr
if key in self.data: return(self.data[key])
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 217, in getattr
if key in self.data: return(self.data[key])
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 217, in getattr
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 217, in getattr
if key in self.data: return(self.data[key]
...

Unable to create server in v2.39

Traceback (most recent call last):
File "deploy.py", line 12, in
print create_server(clc_user, clc_pass, clc_account, chef_server_specs)
File "/root/integrator/modules/create_server.py", line 17, in create_server
description = specs['Description']
File "/usr/lib/python2.6/site-packages/clc/APIv2/server.py", line 499, in Create
if type.low() == "baremetal": type = "bareMetal"

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.