cs 3.2.0__tar.gz → 3.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cs
3
- Version: 3.2.0
3
+ Version: 3.3.1
4
4
  Summary: A simple yet powerful CloudStack API client for Python and the command-line.
5
- Home-page: https://github.com/exoscale/cs
5
+ Home-page: https://github.com/ngine-io/cs
6
6
  Author: Bruno Renié
7
7
  License: BSD
8
8
  Classifier: Intended Audience :: Developers
@@ -14,20 +14,32 @@ Classifier: Programming Language :: Python :: 3.8
14
14
  Classifier: Programming Language :: Python :: 3.9
15
15
  Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ License-File: LICENSE
19
+ Requires-Dist: pytz
20
+ Requires-Dist: requests
17
21
  Provides-Extra: async
22
+ Requires-Dist: aiohttp; extra == "async"
18
23
  Provides-Extra: highlight
19
- License-File: LICENSE
24
+ Requires-Dist: pygments; extra == "highlight"
25
+
26
+ .. image:: https://github.com/ngine-io/cs/actions/workflows/main.yml/badge.svg
27
+ :alt: CI
28
+ :target: https://github.com/ngine-io/cs/actions/workflows/main.yml
29
+ .. image:: https://img.shields.io/pypi/pyversions/cs.svg
30
+ :alt: Python versions
31
+ :target: https://pypi.org/project/cs/
20
32
 
21
- CS
22
- ==
33
+ .. image:: https://img.shields.io/pypi/dw/cs.svg
34
+ :alt: Downloads / Week
35
+ :target: https://pypi.org/project/cs/
23
36
 
24
37
  .. image:: https://img.shields.io/pypi/l/cs.svg
25
38
  :alt: License
26
39
  :target: https://pypi.org/project/cs/
27
40
 
28
- .. image:: https://img.shields.io/pypi/pyversions/cs.svg
29
- :alt: Python versions
30
- :target: https://pypi.org/project/cs/
41
+ CS - Python CloudStack API client
42
+ =================================
31
43
 
32
44
  A simple, yet powerful CloudStack API client for python and the command-line.
33
45
 
@@ -61,7 +73,7 @@ In Python:
61
73
 
62
74
  from cs import CloudStack
63
75
 
64
- cs = CloudStack(endpoint='https://api.exoscale.ch/v1',
76
+ cs = CloudStack(endpoint='https://cloudstack.example.com/client/api',
65
77
  key='cloudstack api key',
66
78
  secret='cloudstack api secret')
67
79
 
@@ -78,13 +90,13 @@ From the command-line, this requires some configuration:
78
90
  .. code-block:: ini
79
91
 
80
92
  [cloudstack]
81
- endpoint = https://api.exoscale.ch/v1
93
+ endpoint = https://cloudstack.example.com/client/api
82
94
  key = cloudstack api key
83
95
  secret = cloudstack api secret
84
96
  # Optional ca authority certificate
85
- verify = /path/to/certs/exoscale_ca.crt
97
+ verify = /path/to/certs/ca.crt
86
98
  # Optional client PEM certificate
87
- cert = /path/to/client_exoscale.pem
99
+ cert = /path/to/client.pem
88
100
  # If you need to pass the certificate and key as separate files
89
101
  cert_key = /path/to/client_key.pem
90
102
 
@@ -179,14 +191,14 @@ the credentials or endpoint to use with a command-line flag.
179
191
  key = api key
180
192
  secret = api secret
181
193
 
182
- [exoscale]
183
- endpoint = https://api.exoscale.ch/v1
194
+ [region-example]
195
+ endpoint = https://cloudstack.example.com/client/api
184
196
  key = api key
185
197
  secret = api secret
186
198
 
187
199
  Usage::
188
200
 
189
- $ cs listVirtualMachines --region=exoscale
201
+ $ cs listVirtualMachines --region=region-example
190
202
 
191
203
  Optionally ``CLOUDSTACK_REGION`` can be used to overwrite the default region ``cloudstack``.
192
204
 
@@ -270,7 +282,7 @@ Release Procedure
270
282
 
271
283
  mktmpenv -p /usr/bin/python3
272
284
  pip install -U twine wheel build
273
- cd exoscale/cs
285
+ cd ./cs
274
286
  rm -rf build dist
275
287
  python -m build
276
288
  twine upload dist/*
@@ -279,4 +291,3 @@ Links
279
291
  -----
280
292
 
281
293
  * CloudStack API: http://cloudstack.apache.org/api.html
282
- * Example of use: `Get Started with the exoscale API client <https://www.exoscale.com/syslog/2016/02/23/get-started-with-the-exoscale-api-client/>`_
@@ -1,13 +1,20 @@
1
- CS
2
- ==
1
+ .. image:: https://github.com/ngine-io/cs/actions/workflows/main.yml/badge.svg
2
+ :alt: CI
3
+ :target: https://github.com/ngine-io/cs/actions/workflows/main.yml
4
+ .. image:: https://img.shields.io/pypi/pyversions/cs.svg
5
+ :alt: Python versions
6
+ :target: https://pypi.org/project/cs/
7
+
8
+ .. image:: https://img.shields.io/pypi/dw/cs.svg
9
+ :alt: Downloads / Week
10
+ :target: https://pypi.org/project/cs/
3
11
 
4
12
  .. image:: https://img.shields.io/pypi/l/cs.svg
5
13
  :alt: License
6
14
  :target: https://pypi.org/project/cs/
7
15
 
8
- .. image:: https://img.shields.io/pypi/pyversions/cs.svg
9
- :alt: Python versions
10
- :target: https://pypi.org/project/cs/
16
+ CS - Python CloudStack API client
17
+ =================================
11
18
 
12
19
  A simple, yet powerful CloudStack API client for python and the command-line.
13
20
 
@@ -41,7 +48,7 @@ In Python:
41
48
 
42
49
  from cs import CloudStack
43
50
 
44
- cs = CloudStack(endpoint='https://api.exoscale.ch/v1',
51
+ cs = CloudStack(endpoint='https://cloudstack.example.com/client/api',
45
52
  key='cloudstack api key',
46
53
  secret='cloudstack api secret')
47
54
 
@@ -58,13 +65,13 @@ From the command-line, this requires some configuration:
58
65
  .. code-block:: ini
59
66
 
60
67
  [cloudstack]
61
- endpoint = https://api.exoscale.ch/v1
68
+ endpoint = https://cloudstack.example.com/client/api
62
69
  key = cloudstack api key
63
70
  secret = cloudstack api secret
64
71
  # Optional ca authority certificate
65
- verify = /path/to/certs/exoscale_ca.crt
72
+ verify = /path/to/certs/ca.crt
66
73
  # Optional client PEM certificate
67
- cert = /path/to/client_exoscale.pem
74
+ cert = /path/to/client.pem
68
75
  # If you need to pass the certificate and key as separate files
69
76
  cert_key = /path/to/client_key.pem
70
77
 
@@ -159,14 +166,14 @@ the credentials or endpoint to use with a command-line flag.
159
166
  key = api key
160
167
  secret = api secret
161
168
 
162
- [exoscale]
163
- endpoint = https://api.exoscale.ch/v1
169
+ [region-example]
170
+ endpoint = https://cloudstack.example.com/client/api
164
171
  key = api key
165
172
  secret = api secret
166
173
 
167
174
  Usage::
168
175
 
169
- $ cs listVirtualMachines --region=exoscale
176
+ $ cs listVirtualMachines --region=region-example
170
177
 
171
178
  Optionally ``CLOUDSTACK_REGION`` can be used to overwrite the default region ``cloudstack``.
172
179
 
@@ -250,7 +257,7 @@ Release Procedure
250
257
 
251
258
  mktmpenv -p /usr/bin/python3
252
259
  pip install -U twine wheel build
253
- cd exoscale/cs
260
+ cd ./cs
254
261
  rm -rf build dist
255
262
  python -m build
256
263
  twine upload dist/*
@@ -259,4 +266,3 @@ Links
259
266
  -----
260
267
 
261
268
  * CloudStack API: http://cloudstack.apache.org/api.html
262
- * Example of use: `Get Started with the exoscale API client <https://www.exoscale.com/syslog/2016/02/23/get-started-with-the-exoscale-api-client/>`_
@@ -3,11 +3,7 @@ import json
3
3
  import os
4
4
  import sys
5
5
  from collections import defaultdict
6
-
7
- try:
8
- from configparser import NoSectionError
9
- except ImportError: # python 2
10
- from ConfigParser import NoSectionError
6
+ from configparser import NoSectionError
11
7
 
12
8
  try:
13
9
  import pygments
@@ -23,6 +19,7 @@ from .client import (
23
19
  CloudStackException,
24
20
  read_config,
25
21
  )
22
+ from .version import __version__
26
23
 
27
24
 
28
25
  __all__ = [
@@ -32,15 +29,14 @@ __all__ = [
32
29
  "CloudStackApiException",
33
30
  ]
34
31
 
35
- if sys.version_info >= (3, 5):
36
- try:
37
- import aiohttp # noqa
38
- except ImportError:
39
- pass
40
- else:
41
- from ._async import AIOCloudStack # noqa
32
+ try:
33
+ import aiohttp # noqa
34
+ except ImportError:
35
+ pass
36
+ else:
37
+ from ._async import AIOCloudStack # noqa
42
38
 
43
- __all__.append("AIOCloudStack")
39
+ __all__.append("AIOCloudStack")
44
40
 
45
41
 
46
42
  def _format_json(data, theme):
@@ -56,7 +52,7 @@ def _format_json(data, theme):
56
52
 
57
53
 
58
54
  def main(args=None):
59
- parser = argparse.ArgumentParser(description="Cloustack client.")
55
+ parser = argparse.ArgumentParser(description="Cloudstack client.")
60
56
  parser.add_argument(
61
57
  "--region",
62
58
  "-r",
@@ -97,7 +93,15 @@ def main(args=None):
97
93
  help="trace the HTTP requests done on stderr",
98
94
  )
99
95
  parser.add_argument(
100
- "command", metavar="COMMAND", help="Cloudstack API command to execute"
96
+ "command",
97
+ metavar="COMMAND",
98
+ help="Cloudstack API command to execute",
99
+ )
100
+
101
+ parser.add_argument(
102
+ "--version",
103
+ action="version",
104
+ version=__version__,
101
105
  )
102
106
 
103
107
  def parse_option(x):
@@ -116,6 +120,7 @@ def main(args=None):
116
120
  )
117
121
 
118
122
  options = parser.parse_args(args=args)
123
+
119
124
  command = options.command
120
125
  kwargs = defaultdict(set)
121
126
  for arg in options.arguments:
@@ -133,8 +138,10 @@ def main(args=None):
133
138
 
134
139
  if options.post:
135
140
  config["method"] = "post"
141
+
136
142
  if options.trace:
137
143
  config["trace"] = True
144
+
138
145
  cs = CloudStack(**config)
139
146
  ok = True
140
147
  response = None
@@ -1,6 +1,3 @@
1
- #! /usr/bin/env python
2
- from __future__ import print_function
3
-
4
1
  import base64
5
2
  import hashlib
6
3
  import hmac
@@ -8,42 +5,21 @@ import os
8
5
  import re
9
6
  import sys
10
7
  import time
8
+ from configparser import ConfigParser
11
9
  from datetime import datetime, timedelta
12
10
  from fnmatch import fnmatch
13
-
14
- try:
15
- from configparser import ConfigParser
16
- except ImportError: # python 2
17
- from ConfigParser import ConfigParser
18
-
19
- try:
20
- from urllib.parse import quote
21
- except ImportError: # python 2
22
- from urllib import quote
11
+ from urllib.parse import quote
23
12
 
24
13
  import pytz
25
14
 
26
15
  import requests
27
16
  from requests.structures import CaseInsensitiveDict
28
17
 
29
- PY2 = sys.version_info < (3, 0)
30
-
31
- if PY2:
32
- text_type = unicode # noqa
33
- string_type = basestring # noqa
34
- integer_types = int, long # noqa
35
- binary_type = str
36
- else:
37
- text_type = str
38
- string_type = str
39
- integer_types = int
40
- binary_type = bytes
41
18
 
42
- if sys.version_info >= (3, 5):
43
- try:
44
- from . import AIOCloudStack # noqa
45
- except ImportError:
46
- pass
19
+ try:
20
+ from . import AIOCloudStack # noqa
21
+ except ImportError:
22
+ pass
47
23
 
48
24
 
49
25
  TIMEOUT = 10
@@ -124,8 +100,6 @@ def cs_encode(s):
124
100
 
125
101
  java.net.URLEncoder.encode(s).replace('+', '%20')
126
102
  """
127
- if PY2 and isinstance(s, text_type):
128
- s = s.encode("utf-8")
129
103
  return quote(s, safe="*")
130
104
 
131
105
 
@@ -146,11 +120,11 @@ def transform(params):
146
120
  params.pop(key)
147
121
  continue
148
122
 
149
- if isinstance(value, (string_type, binary_type)):
123
+ if isinstance(value, (str, bytes)):
150
124
  continue
151
125
 
152
- if isinstance(value, integer_types):
153
- params[key] = text_type(value)
126
+ if isinstance(value, int):
127
+ params[key] = str(value)
154
128
  elif isinstance(value, (list, tuple, set, dict)):
155
129
  if not value:
156
130
  params.pop(key)
@@ -166,7 +140,7 @@ def transform(params):
166
140
  for index, val in enumerate(value):
167
141
  for name, v in val.items():
168
142
  k = "%s[%d].%s" % (key, index, name)
169
- params[k] = text_type(v)
143
+ params[k] = str(v)
170
144
  else:
171
145
  raise ValueError(type(value))
172
146
 
@@ -606,7 +580,7 @@ def read_config(ini_group=None):
606
580
  # convert booleans values.
607
581
  bool_keys = ("dangerous_no_tls_verify",)
608
582
  for bool_key in bool_keys:
609
- if isinstance(config[bool_key], string_type):
583
+ if isinstance(config[bool_key], str):
610
584
  try:
611
585
  config[bool_key] = strtobool(config[bool_key])
612
586
  except ValueError:
cs-3.3.1/cs/version.py ADDED
@@ -0,0 +1 @@
1
+ __version__ = "3.3.1"
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cs
3
- Version: 3.2.0
3
+ Version: 3.3.1
4
4
  Summary: A simple yet powerful CloudStack API client for Python and the command-line.
5
- Home-page: https://github.com/exoscale/cs
5
+ Home-page: https://github.com/ngine-io/cs
6
6
  Author: Bruno Renié
7
7
  License: BSD
8
8
  Classifier: Intended Audience :: Developers
@@ -14,20 +14,32 @@ Classifier: Programming Language :: Python :: 3.8
14
14
  Classifier: Programming Language :: Python :: 3.9
15
15
  Classifier: Programming Language :: Python :: 3.10
16
16
  Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ License-File: LICENSE
19
+ Requires-Dist: pytz
20
+ Requires-Dist: requests
17
21
  Provides-Extra: async
22
+ Requires-Dist: aiohttp; extra == "async"
18
23
  Provides-Extra: highlight
19
- License-File: LICENSE
24
+ Requires-Dist: pygments; extra == "highlight"
25
+
26
+ .. image:: https://github.com/ngine-io/cs/actions/workflows/main.yml/badge.svg
27
+ :alt: CI
28
+ :target: https://github.com/ngine-io/cs/actions/workflows/main.yml
29
+ .. image:: https://img.shields.io/pypi/pyversions/cs.svg
30
+ :alt: Python versions
31
+ :target: https://pypi.org/project/cs/
20
32
 
21
- CS
22
- ==
33
+ .. image:: https://img.shields.io/pypi/dw/cs.svg
34
+ :alt: Downloads / Week
35
+ :target: https://pypi.org/project/cs/
23
36
 
24
37
  .. image:: https://img.shields.io/pypi/l/cs.svg
25
38
  :alt: License
26
39
  :target: https://pypi.org/project/cs/
27
40
 
28
- .. image:: https://img.shields.io/pypi/pyversions/cs.svg
29
- :alt: Python versions
30
- :target: https://pypi.org/project/cs/
41
+ CS - Python CloudStack API client
42
+ =================================
31
43
 
32
44
  A simple, yet powerful CloudStack API client for python and the command-line.
33
45
 
@@ -61,7 +73,7 @@ In Python:
61
73
 
62
74
  from cs import CloudStack
63
75
 
64
- cs = CloudStack(endpoint='https://api.exoscale.ch/v1',
76
+ cs = CloudStack(endpoint='https://cloudstack.example.com/client/api',
65
77
  key='cloudstack api key',
66
78
  secret='cloudstack api secret')
67
79
 
@@ -78,13 +90,13 @@ From the command-line, this requires some configuration:
78
90
  .. code-block:: ini
79
91
 
80
92
  [cloudstack]
81
- endpoint = https://api.exoscale.ch/v1
93
+ endpoint = https://cloudstack.example.com/client/api
82
94
  key = cloudstack api key
83
95
  secret = cloudstack api secret
84
96
  # Optional ca authority certificate
85
- verify = /path/to/certs/exoscale_ca.crt
97
+ verify = /path/to/certs/ca.crt
86
98
  # Optional client PEM certificate
87
- cert = /path/to/client_exoscale.pem
99
+ cert = /path/to/client.pem
88
100
  # If you need to pass the certificate and key as separate files
89
101
  cert_key = /path/to/client_key.pem
90
102
 
@@ -179,14 +191,14 @@ the credentials or endpoint to use with a command-line flag.
179
191
  key = api key
180
192
  secret = api secret
181
193
 
182
- [exoscale]
183
- endpoint = https://api.exoscale.ch/v1
194
+ [region-example]
195
+ endpoint = https://cloudstack.example.com/client/api
184
196
  key = api key
185
197
  secret = api secret
186
198
 
187
199
  Usage::
188
200
 
189
- $ cs listVirtualMachines --region=exoscale
201
+ $ cs listVirtualMachines --region=region-example
190
202
 
191
203
  Optionally ``CLOUDSTACK_REGION`` can be used to overwrite the default region ``cloudstack``.
192
204
 
@@ -270,7 +282,7 @@ Release Procedure
270
282
 
271
283
  mktmpenv -p /usr/bin/python3
272
284
  pip install -U twine wheel build
273
- cd exoscale/cs
285
+ cd ./cs
274
286
  rm -rf build dist
275
287
  python -m build
276
288
  twine upload dist/*
@@ -279,4 +291,3 @@ Links
279
291
  -----
280
292
 
281
293
  * CloudStack API: http://cloudstack.apache.org/api.html
282
- * Example of use: `Get Started with the exoscale API client <https://www.exoscale.com/syslog/2016/02/23/get-started-with-the-exoscale-api-client/>`_
@@ -8,6 +8,7 @@ cs/__init__.py
8
8
  cs/__main__.py
9
9
  cs/_async.py
10
10
  cs/client.py
11
+ cs/version.py
11
12
  cs.egg-info/PKG-INFO
12
13
  cs.egg-info/SOURCES.txt
13
14
  cs.egg-info/dependency_links.txt
@@ -1,12 +1,12 @@
1
1
  [metadata]
2
2
  name = cs
3
- version = 3.2.0
4
- url = https://github.com/exoscale/cs
3
+ version = 3.3.1
4
+ url = https://github.com/ngine-io/cs
5
5
  author = Bruno Renié
6
6
  description = A simple yet powerful CloudStack API client for Python and the command-line.
7
7
  long_description = file: README.rst
8
8
  license = BSD
9
- license_file = LICENSE
9
+ license_files = LICENSE
10
10
  classifiers =
11
11
  Intended Audience :: Developers
12
12
  Intended Audience :: System Administrators
@@ -17,6 +17,7 @@ classifiers =
17
17
  Programming Language :: Python :: 3.9
18
18
  Programming Language :: Python :: 3.10
19
19
  Programming Language :: Python :: 3.11
20
+ Programming Language :: Python :: 3.12
20
21
 
21
22
  [options]
22
23
  packages = find:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes