Hello community,
here is the log from the commit of package python-os-client-config for
openSUSE:Factory checked in at 2015-10-30 13:42:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-os-client-config (Old)
and /work/SRC/openSUSE:Factory/.python-os-client-config.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-os-client-config"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-os-client-config/python-os-client-config.changes
2015-09-02 07:54:09.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.python-os-client-config.new/python-os-client-config.changes
2015-10-30 13:42:35.000000000 +0100
@@ -1,0 +2,33 @@
+Sat Sep 26 17:52:40 UTC 2015 - [email protected]
+
+- update to 1.7.5:
+ * Fix a little error with the None auth type
+ * Change ignore-errors to ignore_errors
+ * Handle ksa opt with no deprecated field
+ * Fall back to keystoneclient arg processing
+ * Fix typo in ovh region names
+ * Move plugin loader creation to try block
+ * Convert auth kwargs '-' to '_'
+ * Properly handle os- prefixed args in fix_args
+ * Test kwargs passing not just argparse
+ * Allow configuring domain id once
+ * Add internap to the vendor list
+ * Fix typo in comment - we use ksa not ksc
+ * Defer plugin validation to keystoneauth
+ * Remove an extra line
+ * Add Datacentred to the vendor list
+ * Add ultimum to list of vendors
+ * Add Enter Cloud Suite to vendors list
+ * Add elastx to vendor support matrix
+ * Switch the image default to v2
+ * Update auro auth_url and region information
+ * Add citycloud to the vendors list
+ * Return keystoneauth plugins based on auth args
+ * Remove duplicate lines that are the same as default
+ * Add default version number for heat
+ * Update OVH public cloud information
+ * Handle empty defaults.yaml file
+ * Do not treat project_name and project_id the same
+ * Revert "Revert "Use the correct auth_plugin for token authentication""
+
+-------------------------------------------------------------------
Old:
----
os-client-config-1.6.3.tar.gz
New:
----
os-client-config-1.7.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-os-client-config.spec ++++++
--- /var/tmp/diff_new_pack.7ijSKu/_old 2015-10-30 13:42:36.000000000 +0100
+++ /var/tmp/diff_new_pack.7ijSKu/_new 2015-10-30 13:42:36.000000000 +0100
@@ -19,7 +19,7 @@
%bcond_with test
Name: python-os-client-config
-Version: 1.6.3
+Version: 1.7.5
Release: 0
Summary: OpenStack Client Configuation Library
License: Apache-2.0
++++++ os-client-config-1.6.3.tar.gz -> os-client-config-1.7.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/.coveragerc
new/os-client-config-1.7.5/.coveragerc
--- old/os-client-config-1.6.3/.coveragerc 2015-08-13 11:14:33.000000000
+0200
+++ new/os-client-config-1.7.5/.coveragerc 2015-09-22 21:41:42.000000000
+0200
@@ -4,4 +4,4 @@
omit = os_client_config/tests/*,os_client_config/openstack/*
[report]
-ignore-errors = True
\ No newline at end of file
+ignore_errors = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/AUTHORS
new/os-client-config-1.7.5/AUTHORS
--- old/os-client-config-1.6.3/AUTHORS 2015-08-13 11:15:04.000000000 +0200
+++ new/os-client-config-1.7.5/AUTHORS 2015-09-22 21:42:24.000000000 +0200
@@ -1,12 +1,15 @@
Alex Gaynor <[email protected]>
Chris Church <[email protected]>
+Clark Boylan <[email protected]>
Clint Byrum <[email protected]>
David Shrewsbury <[email protected]>
Davide Guerri <[email protected]>
Dean Troyer <[email protected]>
Dean Troyer <[email protected]>
+Eric Harney <[email protected]>
Ghe Rivero <[email protected]>
Gregory Haynes <[email protected]>
+James E. Blair <[email protected]>
Jeremy Stanley <[email protected]>
Julia Kreger <[email protected]>
Monty Taylor <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/ChangeLog
new/os-client-config-1.7.5/ChangeLog
--- old/os-client-config-1.6.3/ChangeLog 2015-08-13 11:15:04.000000000
+0200
+++ new/os-client-config-1.7.5/ChangeLog 2015-09-22 21:42:24.000000000
+0200
@@ -1,6 +1,62 @@
CHANGES
=======
+1.7.5
+-----
+
+* Fix a little error with the None auth type
+* Change ignore-errors to ignore_errors
+
+1.7.4
+-----
+
+* Handle ksa opt with no deprecated field
+
+1.7.3
+-----
+
+* Fall back to keystoneclient arg processing
+* Fix typo in ovh region names
+
+1.7.2
+-----
+
+* Move plugin loader creation to try block
+
+1.7.1
+-----
+
+* Convert auth kwargs '-' to '_'
+* Properly handle os- prefixed args in fix_args
+* Test kwargs passing not just argparse
+
+1.7.0
+-----
+
+* Allow configuring domain id once
+* Add internap to the vendor list
+* Fix typo in comment - we use ksa not ksc
+* Defer plugin validation to keystoneauth
+
+1.6.4
+-----
+
+* Remove an extra line
+* Add Datacentred to the vendor list
+* Add ultimum to list of vendors
+* Add Enter Cloud Suite to vendors list
+* Add elastx to vendor support matrix
+* Switch the image default to v2
+* Update auro auth_url and region information
+* Add citycloud to the vendors list
+* Return keystoneauth plugins based on auth args
+* Remove duplicate lines that are the same as default
+* Add default version number for heat
+* Update OVH public cloud information
+* Handle empty defaults.yaml file
+* Do not treat project_name and project_id the same
+* Revert "Revert "Use the correct auth_plugin for token authentication""
+
1.6.3
-----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/PKG-INFO
new/os-client-config-1.7.5/PKG-INFO
--- old/os-client-config-1.6.3/PKG-INFO 2015-08-13 11:15:04.000000000 +0200
+++ new/os-client-config-1.7.5/PKG-INFO 2015-09-22 21:42:25.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: os-client-config
-Version: 1.6.3
+Version: 1.7.5
Summary: OpenStack Client Configuation Library
Home-page: http://www.openstack.org/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/doc/source/vendor-support.rst
new/os-client-config-1.7.5/doc/source/vendor-support.rst
--- old/os-client-config-1.6.3/doc/source/vendor-support.rst 2015-08-13
11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/doc/source/vendor-support.rst 2015-09-22
21:41:42.000000000 +0200
@@ -15,7 +15,7 @@
* Identity uses `password` authentication
* Identity API Version is 2
-* Image API Version is 1
+* Image API Version is 2
* Images must be in `qcow2` format
* Images are uploaded using PUT interface
* Public IPv4 is directly routable via DHCP from Neutron
@@ -37,6 +37,7 @@
============== ================
* DNS Service Type is `hpext:dns`
+* Image API Version is 1
* Public IPv4 is provided via NAT with Neutron Floating IP
rackspace
@@ -56,7 +57,6 @@
* Database Service Type is `rax:database`
* Compute Service Name is `cloudServersOpenStack`
-* Image API Version is 2
* Images must be in `vhd` format
* Images must be uploaded using the Glance Task Interface
* Floating IPs are not needed
@@ -78,7 +78,6 @@
RegionOne Region One
============== ================
-* Image API Version is 2
* Images must be in `raw` format
* Public IPv4 is provided via NAT with Neutron Floating IP
* IPv6 is provided to every server
@@ -94,8 +93,6 @@
ca-ymq-1 Montreal
============== ================
-* Image API Version is 2
-
runabove
--------
@@ -108,8 +105,6 @@
BHS-1 Beauharnois, QC
============== ================
-* Image API Version is 2
-* Images must be in `qcow2` format
* Floating IPs are not supported
unitedstack
@@ -125,7 +120,6 @@
============== ================
* Identity API Version is 3
-* Image API Version is 2
* Images must be in `raw` format
auro
@@ -136,10 +130,9 @@
============== ================
Region Name Human Name
============== ================
-RegionOne RegionOne
+van1 Vancouver, BC
============== ================
-* Identity API Version is 2
* Public IPv4 is provided via NAT with Nova Floating IP
* Floating IPs are provided by Nova
* Security groups are provided by Nova
@@ -152,8 +145,91 @@
============== ================
Region Name Human Name
============== ================
-SBG-1 Strassbourg, FR
+SBG1 Strassbourg, FR
+GRA1 Gravelines, FR
============== ================
* Images must be in `raw` format
* Floating IPs are not supported
+
+citycloud
+---------
+
+https://identity1.citycloud.com:5000/v3/
+
+============== ================
+Region Name Human Name
+============== ================
+Lon1 London, UK
+Sto2 Stockholm, SE
+Kna1 Karlskrona, SE
+============== ================
+
+* Identity API Version is 3
+* Public IPv4 is provided via NAT with Neutron Floating IP
+
+elastx
+------
+
+https://ops.elastx.net:5000/v2.0
+
+============== ================
+Region Name Human Name
+============== ================
+regionOne Region One
+============== ================
+
+* Public IPv4 is provided via NAT with Neutron Floating IP
+
+entercloudsuite
+---------------
+
+https://api.entercloudsuite.com/v2.0
+
+============== ================
+Region Name Human Name
+============== ================
+nl-ams1 Amsterdam, NL
+it-mil1 Milan, IT
+de-fra1 Frankfurt, DE
+============== ================
+
+ultimum
+-------
+
+https://console.ultimum-cloud.com:5000/v2.0
+
+============== ================
+Region Name Human Name
+============== ================
+RegionOne Region One
+============== ================
+
+datacentred
+-----------
+
+https://compute.datacentred.io:5000/v2.0
+
+============== ================
+Region Name Human Name
+============== ================
+sal01 Manchester, UK
+============== ================
+
+* Image API Version is 1
+
+internap
+--------
+
+https://identity.api.cloud.iweb.com/v2.0
+
+============== ================
+Region Name Human Name
+============== ================
+ams01 Amsterdam, NL
+da01 Dallas, TX
+nyj01 New York, NY
+============== ================
+
+* Image API Version is 1
+* Floating IPs are not supported
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/cloud_config.py
new/os-client-config-1.7.5/os_client_config/cloud_config.py
--- old/os-client-config-1.6.3/os_client_config/cloud_config.py 2015-08-13
11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/cloud_config.py 2015-09-22
21:41:42.000000000 +0200
@@ -16,11 +16,13 @@
class CloudConfig(object):
- def __init__(self, name, region, config, prefer_ipv6=False):
+ def __init__(self, name, region, config,
+ prefer_ipv6=False, auth_plugin=None):
self.name = name
self.region = region
self.config = config
self._prefer_ipv6 = prefer_ipv6
+ self._auth = auth_plugin
def __getattr__(self, key):
"""Return arbitrary attributes."""
@@ -106,3 +108,7 @@
@property
def prefer_ipv6(self):
return self._prefer_ipv6
+
+ def get_auth(self):
+ """Return a keystoneauth plugin from the auth credentials."""
+ return self._auth
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/os_client_config/config.py
new/os-client-config-1.7.5/os_client_config/config.py
--- old/os-client-config-1.6.3/os_client_config/config.py 2015-08-13
11:14:34.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/config.py 2015-09-22
21:41:43.000000000 +0200
@@ -17,12 +17,11 @@
import warnings
import appdirs
-import yaml
-
try:
- import keystoneclient.auth as ksc_auth
+ from keystoneauth1 import loading
except ImportError:
- ksc_auth = None
+ loading = None
+import yaml
from os_client_config import cloud_config
from os_client_config import defaults
@@ -283,15 +282,38 @@
cloud = self._fix_backwards_project(cloud)
cloud = self._fix_backwards_auth_plugin(cloud)
cloud = self._fix_backwards_interface(cloud)
+ cloud = self._handle_domain_id(cloud)
+ return cloud
+
+ def _handle_domain_id(self, cloud):
+ # Allow people to just specify domain once if it's the same
+ mappings = {
+ 'domain_id': ('user_domain_id', 'project_domain_id'),
+ 'domain_name': ('user_domain_name', 'project_domain_name'),
+ }
+ for target_key, possible_values in mappings.items():
+ for key in possible_values:
+ if target_key in cloud['auth'] and key not in cloud['auth']:
+ cloud['auth'][key] = cloud['auth'][target_key]
+ cloud['auth'].pop(target_key, None)
return cloud
def _fix_backwards_project(self, cloud):
# Do the lists backwards so that project_name is the ultimate winner
+ # Also handle moving domain names into auth so that domain mapping
+ # is easier
mappings = {
- 'project_name': ('tenant_id', 'tenant-id',
- 'project_id', 'project-id',
- 'tenant_name', 'tenant-name',
+ 'project_id': ('tenant_id', 'tenant-id',
+ 'project_id', 'project-id'),
+ 'project_name': ('tenant_name', 'tenant-name',
'project_name', 'project-name'),
+ 'domain_id': ('domain_id', 'domain-id'),
+ 'domain_name': ('domain_name', 'domain-name'),
+ 'user_domain_id': ('user_domain_id', 'user-domain-id'),
+ 'user_domain_name': ('user_domain_name', 'user-domain-name'),
+ 'project_domain_id': ('project_domain_id', 'project-domain-id'),
+ 'project_domain_name': (
+ 'project_domain_name', 'project-domain-name'),
}
for target_key, possible_values in mappings.items():
target = None
@@ -363,8 +385,13 @@
os_args = dict()
new_args = dict()
for (key, val) in iter(args.items()):
+ if type(args[key]) == dict:
+ # dive into the auth dict
+ new_args[key] = self._fix_args(args[key])
+ continue
+
key = key.replace('-', '_')
- if key.startswith('os'):
+ if key.startswith('os_'):
os_args[key[3:]] = val
else:
new_args[key] = val
@@ -376,12 +403,33 @@
if opt_name in config:
return config[opt_name]
else:
- for d_opt in opt.deprecated_opts:
+ deprecated = getattr(opt, 'deprecated', getattr(
+ opt, 'deprecated_opts', []))
+ for d_opt in deprecated:
d_opt_name = d_opt.name.replace('-', '_')
if d_opt_name in config:
return config[d_opt_name]
- def _validate_auth(self, config):
+ def _get_auth_loader(self, config):
+ # Re-use the admin_token plugin for the "None" plugin
+ # since it does not look up endpoints or tokens but rather
+ # does a passthrough. This is useful for things like Ironic
+ # that have a keystoneless operational mode, but means we're
+ # still dealing with a keystoneauth Session object, so all the
+ # _other_ things (SSL arg handling, timeout) all work consistently
+ if config['auth_type'] in (None, "None", ''):
+ config['auth_type'] = 'admin_token'
+ # Set to notused rather than None because validate_auth will
+ # strip the value if it's actually python None
+ config['auth']['token'] = 'notused'
+ return loading.get_plugin_loader(config['auth_type'])
+
+ def _validate_auth_ksc(self, config):
+ try:
+ import keystoneclient.auth as ksc_auth
+ except ImportError:
+ return config
+
# May throw a keystoneclient.exceptions.NoMatchingPlugin
plugin_options = ksc_auth.get_plugin_class(
config['auth_type']).get_options()
@@ -424,6 +472,38 @@
return config
+ def _validate_auth(self, config, loader):
+ # May throw a keystoneauth1.exceptions.NoMatchingPlugin
+
+ plugin_options = loader.get_options()
+
+ for p_opt in plugin_options:
+ # if it's in config.auth, win, kill it from config dict
+ # if it's in config and not in config.auth, move it
+ # deprecated loses to current
+ # provided beats default, deprecated or not
+ winning_value = self._find_winning_auth_value(
+ p_opt, config['auth'])
+ if not winning_value:
+ winning_value = self._find_winning_auth_value(p_opt, config)
+
+ # Clean up after ourselves
+ for opt in [p_opt.name] + [o.name for o in p_opt.deprecated]:
+ opt = opt.replace('-', '_')
+ config.pop(opt, None)
+ config['auth'].pop(opt, None)
+
+ if winning_value:
+ # Prefer the plugin configuration dest value if the value's key
+ # is marked as depreciated.
+ if p_opt.dest is None:
+ config['auth'][p_opt.name.replace('-', '_')] = (
+ winning_value)
+ else:
+ config['auth'][p_opt.dest] = winning_value
+
+ return config
+
def get_one_cloud(self, cloud=None, validate=True,
argparse=None, **kwargs):
"""Retrieve a single cloud configuration and merge additional options
@@ -431,13 +511,16 @@
:param string cloud:
The name of the configuration to load from clouds.yaml
:param boolean validate:
- Validate that required arguments are present and certain
- argument combinations are valid
+ Validate the config. Setting this to False causes no auth plugin
+ to be created. It's really only useful for testing.
:param Namespace argparse:
An argparse Namespace object; allows direct passing in of
argparse options to be added to the cloud config. Values
of None and '' will be removed.
:param kwargs: Additional configuration options
+
+ :raises: keystoneauth1.exceptions.MissingRequiredOptions
+ on missing required auth parameters
"""
if cloud is None and self.envvar_key in self.get_cloud_names():
@@ -467,12 +550,27 @@
if type(config[key]) is not bool:
config[key] = get_boolean(config[key])
- if 'auth_type' in config:
- if config['auth_type'] in ('', 'None', None):
- validate = False
-
- if validate and ksc_auth:
- config = self._validate_auth(config)
+ if loading:
+ if validate:
+ try:
+ loader = self._get_auth_loader(config)
+ config = self._validate_auth(config, loader)
+ auth_plugin = loader.load_from_options(**config['auth'])
+ except Exception as e:
+ # We WANT the ksa exception normally
+ # but OSC can't handle it right now, so we try deferring
+ # to ksc. If that ALSO fails, it means there is likely
+ # a deeper issue, so we assume the ksa error was correct
+ auth_plugin = None
+ try:
+ config = self._validate_auth_ksc(config)
+ except Exception:
+ raise e
+ else:
+ auth_plugin = None
+ else:
+ auth_plugin = None
+ config = self._validate_auth_ksc(config)
# If any of the defaults reference other values, we need to expand
for (key, value) in config.items():
@@ -488,7 +586,8 @@
return cloud_config.CloudConfig(
name=cloud_name, region=config['region_name'],
config=self._normalize_keys(config),
- prefer_ipv6=prefer_ipv6)
+ prefer_ipv6=prefer_ipv6,
+ auth_plugin=auth_plugin)
@staticmethod
def set_one_cloud(config_file, cloud, set_config=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/os_client_config/defaults.py
new/os-client-config-1.7.5/os_client_config/defaults.py
--- old/os-client-config-1.6.3/os_client_config/defaults.py 2015-08-13
11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/defaults.py 2015-09-22
21:41:42.000000000 +0200
@@ -35,6 +35,8 @@
key=None,
)
with open(_yaml_path, 'r') as yaml_file:
- _defaults.update(yaml.load(yaml_file.read()))
+ updates = yaml.load(yaml_file.read())
+ if updates is not None:
+ _defaults.update(updates)
return _defaults.copy()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/defaults.yaml
new/os-client-config-1.7.5/os_client_config/defaults.yaml
--- old/os-client-config-1.6.3/os_client_config/defaults.yaml 2015-08-13
11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/defaults.yaml 2015-09-22
21:41:42.000000000 +0200
@@ -8,9 +8,10 @@
floating_ip_source: neutron
identity_api_version: '2'
image_api_use_tasks: false
-image_api_version: '1'
+image_api_version: '2'
image_format: qcow2
network_api_version: '2'
object_api_version: '1'
+orchestration_api_version: '1'
secgroup_source: neutron
volume_api_version: '1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/tests/base.py
new/os-client-config-1.7.5/os_client_config/tests/base.py
--- old/os-client-config-1.6.3/os_client_config/tests/base.py 2015-08-13
11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/tests/base.py 2015-09-22
21:41:42.000000000 +0200
@@ -31,6 +31,7 @@
'public-clouds': {
'_test_cloud_in_our_cloud': {
'auth': {
+ 'auth_url': 'http://example.com/v2',
'username': 'testotheruser',
'project_name': 'testproject',
},
@@ -45,6 +46,7 @@
'_test-cloud_': {
'profile': '_test_cloud_in_our_cloud',
'auth': {
+ 'auth_url': 'http://example.com/v2',
'username': 'testuser',
'password': 'testpass',
},
@@ -53,6 +55,7 @@
'_test_cloud_no_vendor': {
'profile': '_test_non_existant_cloud',
'auth': {
+ 'auth_url': 'http://example.com/v2',
'username': 'testuser',
'password': 'testpass',
'project_name': 'testproject',
@@ -64,6 +67,18 @@
'username': 'testuser',
'password': 'testpass',
'project_id': 12345,
+ 'auth_url': 'http://example.com/v2',
+ },
+ 'region_name': 'test-region',
+ },
+ '_test-cloud-domain-id_': {
+ 'auth': {
+ 'username': 'testuser',
+ 'password': 'testpass',
+ 'project_id': 12345,
+ 'auth_url': 'http://example.com/v2',
+ 'domain_id': '6789',
+ 'project_domain_id': '123456789',
},
'region_name': 'test-region',
},
@@ -72,6 +87,7 @@
'username': 'testuser',
'password': 'testpass',
'project-id': 'testproject',
+ 'auth_url': 'http://example.com/v2',
},
'regions': [
'region1',
@@ -83,6 +99,7 @@
'username': 'testuser',
'password': 'testpass',
'project-id': '12345',
+ 'auth_url': 'http://example.com/v2',
},
'region_name': 'test-region',
}
@@ -132,4 +149,8 @@
self.assertIsNone(cc.cloud)
self.assertIn('username', cc.auth)
self.assertEqual('testuser', cc.auth['username'])
- self.assertEqual('testproject', cc.auth['project_name'])
+ self.assertTrue('project_name' in cc.auth or 'project_id' in cc.auth)
+ if 'project_name' in cc.auth:
+ self.assertEqual('testproject', cc.auth['project_name'])
+ elif 'project_id' in cc.auth:
+ self.assertEqual('testproject', cc.auth['project_id'])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/tests/test_config.py
new/os-client-config-1.7.5/os_client_config/tests/test_config.py
--- old/os-client-config-1.6.3/os_client_config/tests/test_config.py
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/tests/test_config.py
2015-09-22 21:41:42.000000000 +0200
@@ -43,7 +43,7 @@
def test_get_one_cloud(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
vendor_files=[self.vendor_yaml])
- cloud = c.get_one_cloud()
+ cloud = c.get_one_cloud(validate=False)
self.assertIsInstance(cloud, cloud_config.CloudConfig)
self.assertEqual(cloud.name, '')
@@ -61,12 +61,12 @@
)
def test_get_one_cloud_auth_override_defaults(self):
- default_options = {'auth_type': 'token'}
+ default_options = {'compute_api_version': '4'}
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
override_defaults=default_options)
cc = c.get_one_cloud(cloud='_test-cloud_', auth={'username': 'user'})
self.assertEqual('user', cc.auth['username'])
- self.assertEqual('token', cc.auth_type)
+ self.assertEqual('4', cc.compute_api_version)
self.assertEqual(
defaults._defaults['identity_api_version'],
cc.identity_api_version,
@@ -89,13 +89,37 @@
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
vendor_files=[self.vendor_yaml])
cc = c.get_one_cloud('_test-cloud-int-project_')
- self.assertEqual('12345', cc.auth['project_name'])
+ self.assertEqual('12345', cc.auth['project_id'])
+
+ def test_get_one_cloud_with_domain_id(self):
+ c = config.OpenStackConfig(config_files=[self.cloud_yaml],
+ vendor_files=[self.vendor_yaml])
+ cc = c.get_one_cloud('_test-cloud-domain-id_')
+ self.assertEqual('6789', cc.auth['user_domain_id'])
+ self.assertEqual('123456789', cc.auth['project_domain_id'])
+ self.assertNotIn('domain_id', cc.auth)
+ self.assertNotIn('domain-id', cc.auth)
def test_get_one_cloud_with_hyphenated_project_id(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
vendor_files=[self.vendor_yaml])
cc = c.get_one_cloud('_test_cloud_hyphenated')
- self.assertEqual('12345', cc.auth['project_name'])
+ self.assertEqual('12345', cc.auth['project_id'])
+
+ def test_get_one_cloud_with_hyphenated_kwargs(self):
+ c = config.OpenStackConfig(config_files=[self.cloud_yaml],
+ vendor_files=[self.vendor_yaml])
+ args = {
+ 'auth': {
+ 'username': 'testuser',
+ 'password': 'testpass',
+ 'project-id': '12345',
+ 'auth-url': 'http://example.com/v2',
+ },
+ 'region_name': 'test-region',
+ }
+ cc = c.get_one_cloud(**args)
+ self.assertEqual('http://example.com/v2', cc.auth['auth_url'])
def test_no_environ(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
@@ -109,7 +133,7 @@
for k in os.environ.keys():
if k.startswith('OS_'):
self.useFixture(fixtures.EnvironmentVariable(k))
- c.get_one_cloud(cloud='defaults')
+ c.get_one_cloud(cloud='defaults', validate=False)
def test_prefer_ipv6_true(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
@@ -120,7 +144,7 @@
def test_prefer_ipv6_false(self):
c = config.OpenStackConfig(config_files=[self.no_yaml],
vendor_files=[self.no_yaml])
- cc = c.get_one_cloud(cloud='defaults')
+ cc = c.get_one_cloud(cloud='defaults', validate=False)
self.assertFalse(cc.prefer_ipv6)
def test_get_one_cloud_auth_merge(self):
@@ -132,7 +156,8 @@
def test_get_cloud_names(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml])
self.assertEqual(
- ['_test-cloud-int-project_',
+ ['_test-cloud-domain-id_',
+ '_test-cloud-int-project_',
'_test-cloud_',
'_test_cloud_hyphenated',
'_test_cloud_no_vendor',
@@ -144,7 +169,7 @@
for k in os.environ.keys():
if k.startswith('OS_'):
self.useFixture(fixtures.EnvironmentVariable(k))
- c.get_one_cloud(cloud='defaults')
+ c.get_one_cloud(cloud='defaults', validate=False)
self.assertEqual(['defaults'], sorted(c.get_cloud_names()))
def test_set_one_cloud_creates_file(self):
@@ -168,7 +193,8 @@
resulting_cloud_config = {
'auth': {
'password': 'newpass',
- 'username': 'testuser'
+ 'username': 'testuser',
+ 'auth_url': 'http://example.com/v2',
},
'cloud': 'new_cloud',
'profile': '_test_cloud_in_our_cloud',
@@ -188,10 +214,15 @@
def setUp(self):
super(TestConfigArgparse, self).setUp()
- self.options = argparse.Namespace(
+ self.args = dict(
+ auth_url='http://example.com/v2',
+ username='user',
+ password='password',
+ project_name='project',
region_name='other-test-region',
snack_type='cookie',
)
+ self.options = argparse.Namespace(**self.args)
def test_get_one_cloud_argparse(self):
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
@@ -206,9 +237,34 @@
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
vendor_files=[self.vendor_yaml])
- cc = c.get_one_cloud(cloud='', argparse=self.options)
+ cc = c.get_one_cloud(argparse=self.options)
+ self.assertIsNone(cc.cloud)
+ self.assertEqual(cc.region_name, 'other-test-region')
+ self.assertEqual(cc.snack_type, 'cookie')
+
+ def test_get_one_cloud_just_kwargs(self):
+ c = config.OpenStackConfig(config_files=[self.cloud_yaml],
+ vendor_files=[self.vendor_yaml])
+
+ cc = c.get_one_cloud(**self.args)
+ self.assertIsNone(cc.cloud)
+ self.assertEqual(cc.region_name, 'other-test-region')
+ self.assertEqual(cc.snack_type, 'cookie')
+
+ def test_get_one_cloud_dash_kwargs(self):
+ c = config.OpenStackConfig(config_files=[self.cloud_yaml],
+ vendor_files=[self.vendor_yaml])
+
+ args = {
+ 'auth-url': 'http://example.com/v2',
+ 'username': 'user',
+ 'password': 'password',
+ 'project_name': 'project',
+ 'region_name': 'other-test-region',
+ 'snack_type': 'cookie',
+ }
+ cc = c.get_one_cloud(**args)
self.assertIsNone(cc.cloud)
- self.assertNotIn('username', cc.auth)
self.assertEqual(cc.region_name, 'other-test-region')
self.assertEqual(cc.snack_type, 'cookie')
@@ -270,11 +326,11 @@
self.assertEqual('password', cc.auth_type)
def test_set_default_before_init(self):
- config.set_default('auth_type', 'token')
+ config.set_default('identity_api_version', '4')
c = config.OpenStackConfig(config_files=[self.cloud_yaml],
vendor_files=[self.vendor_yaml])
cc = c.get_one_cloud(cloud='_test-cloud_', argparse=None)
- self.assertEqual('token', cc.auth_type)
+ self.assertEqual('4', cc.identity_api_version)
class TestBackwardsCompatibility(base.TestCase):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/auro.yaml
new/os-client-config-1.7.5/os_client_config/vendors/auro.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/auro.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/auro.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -1,7 +1,7 @@
name: auro
profile:
auth:
- auth_url: https://api.auro.io:5000/v2.0
- region_name: RegionOne
+ auth_url: https://api.van1.auro.io:5000/v2.0
+ region_name: van1
secgroup_source: nova
floating_ip_source: nova
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/citycloud.yaml
new/os-client-config-1.7.5/os_client_config/vendors/citycloud.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/citycloud.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.7.5/os_client_config/vendors/citycloud.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -0,0 +1,9 @@
+name: citycloud
+profile:
+ auth:
+ auth_url: https://identity1.citycloud.com:5000/v3/
+ regions:
+ - Lon1
+ - Sto2
+ - Kna1
+ identity_api_version: '3'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/datacentred.yaml
new/os-client-config-1.7.5/os_client_config/vendors/datacentred.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/datacentred.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.7.5/os_client_config/vendors/datacentred.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -0,0 +1,6 @@
+name: datacentred
+profile:
+ auth:
+ auth_url: https://compute.datacentred.io:5000/v2.0
+ region-name: sal01
+ image_api_version: '1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/dreamhost.yaml
new/os-client-config-1.7.5/os_client_config/vendors/dreamhost.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/dreamhost.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/dreamhost.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -3,5 +3,4 @@
auth:
auth_url: https://keystone.dream.io/v2.0
region_name: RegionOne
- image_api_version: '2'
image_format: raw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/elastx.yaml
new/os-client-config-1.7.5/os_client_config/vendors/elastx.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/elastx.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.7.5/os_client_config/vendors/elastx.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -0,0 +1,5 @@
+name: elastx
+profile:
+ auth:
+ auth_url: https://ops.elastx.net:5000/v2.0
+ region_name: regionOne
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/entercloudsuite.yaml
new/os-client-config-1.7.5/os_client_config/vendors/entercloudsuite.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/entercloudsuite.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.7.5/os_client_config/vendors/entercloudsuite.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -0,0 +1,8 @@
+name: entercloudsuite
+profile:
+ auth:
+ auth_url: https://api.entercloudsuite.com/v2.0
+ regions:
+ - it-mil1
+ - nl-ams1
+ - de-fra1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/hp.yaml
new/os-client-config-1.7.5/os_client_config/vendors/hp.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/hp.yaml 2015-08-13
11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/hp.yaml 2015-09-22
21:41:42.000000000 +0200
@@ -6,3 +6,4 @@
- region-a.geo-1
- region-b.geo-1
dns_service_type: hpext:dns
+ image_api_version: '1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/internap.yaml
new/os-client-config-1.7.5/os_client_config/vendors/internap.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/internap.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.7.5/os_client_config/vendors/internap.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -0,0 +1,10 @@
+name: internap
+profile:
+ auth:
+ auth_url: https://identity.api.cloud.iweb.com/v2.0
+ regions:
+ - ams01
+ - da01
+ - nyj01
+ image_api_version: '1'
+ floating_ip_source: None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/ovh.yaml
new/os-client-config-1.7.5/os_client_config/vendors/ovh.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/ovh.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/ovh.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -2,5 +2,8 @@
profile:
auth:
auth_url: https://auth.cloud.ovh.net/v2.0
- region_name: SBG1
+ regions:
+ - GRA1
+ - SBG1
image_format: raw
+ floating_ip_source: None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/rackspace.yaml
new/os-client-config-1.7.5/os_client_config/vendors/rackspace.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/rackspace.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/rackspace.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -10,7 +10,6 @@
- SYD
database_service_type: rax:database
compute_service_name: cloudServersOpenStack
- image_api_version: '2'
image_api_use_tasks: true
image_format: vhd
floating_ip_source: None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/runabove.yaml
new/os-client-config-1.7.5/os_client_config/vendors/runabove.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/runabove.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/runabove.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -5,6 +5,5 @@
regions:
- BHS-1
- SBG-1
- image_api_version: '2'
image_format: qcow2
floating_ip_source: None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/ultimum.yaml
new/os-client-config-1.7.5/os_client_config/vendors/ultimum.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/ultimum.yaml
1970-01-01 01:00:00.000000000 +0100
+++ new/os-client-config-1.7.5/os_client_config/vendors/ultimum.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -0,0 +1,5 @@
+name: ultimum
+profile:
+ auth:
+ auth_url: https://console.ultimum-cloud.com:5000/v2.0
+ region-name: RegionOne
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/unitedstack.yaml
new/os-client-config-1.7.5/os_client_config/vendors/unitedstack.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/unitedstack.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/unitedstack.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -6,6 +6,5 @@
- bj1
- gd1
identity_api_version: '3'
- image_api_version: '2'
image_format: raw
floating_ip_source: None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config/vendors/vexxhost.yaml
new/os-client-config-1.7.5/os_client_config/vendors/vexxhost.yaml
--- old/os-client-config-1.6.3/os_client_config/vendors/vexxhost.yaml
2015-08-13 11:14:33.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config/vendors/vexxhost.yaml
2015-09-22 21:41:42.000000000 +0200
@@ -3,5 +3,4 @@
auth:
auth_url: http://auth.api.thenebulacloud.com:5000/v2.0/
region_name: ca-ymq-1
- image_api_version: '2'
floating_ip_source: None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config.egg-info/PKG-INFO
new/os-client-config-1.7.5/os_client_config.egg-info/PKG-INFO
--- old/os-client-config-1.6.3/os_client_config.egg-info/PKG-INFO
2015-08-13 11:15:04.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config.egg-info/PKG-INFO
2015-09-22 21:42:24.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: os-client-config
-Version: 1.6.3
+Version: 1.7.5
Summary: OpenStack Client Configuation Library
Home-page: http://www.openstack.org/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config.egg-info/SOURCES.txt
new/os-client-config-1.7.5/os_client_config.egg-info/SOURCES.txt
--- old/os-client-config-1.6.3/os_client_config.egg-info/SOURCES.txt
2015-08-13 11:15:04.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config.egg-info/SOURCES.txt
2015-09-22 21:42:25.000000000 +0200
@@ -39,10 +39,16 @@
os_client_config/tests/test_environ.py
os_client_config/vendors/__init__.py
os_client_config/vendors/auro.yaml
+os_client_config/vendors/citycloud.yaml
+os_client_config/vendors/datacentred.yaml
os_client_config/vendors/dreamhost.yaml
+os_client_config/vendors/elastx.yaml
+os_client_config/vendors/entercloudsuite.yaml
os_client_config/vendors/hp.yaml
+os_client_config/vendors/internap.yaml
os_client_config/vendors/ovh.yaml
os_client_config/vendors/rackspace.yaml
os_client_config/vendors/runabove.yaml
+os_client_config/vendors/ultimum.yaml
os_client_config/vendors/unitedstack.yaml
os_client_config/vendors/vexxhost.yaml
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config.egg-info/pbr.json
new/os-client-config-1.7.5/os_client_config.egg-info/pbr.json
--- old/os-client-config-1.6.3/os_client_config.egg-info/pbr.json
2015-08-13 11:15:04.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config.egg-info/pbr.json
2015-09-22 21:42:24.000000000 +0200
@@ -1 +1 @@
-{"is_release": true, "git_version": "c422fe8"}
\ No newline at end of file
+{"git_version": "512d00e", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/os-client-config-1.6.3/os_client_config.egg-info/requires.txt
new/os-client-config-1.7.5/os_client_config.egg-info/requires.txt
--- old/os-client-config-1.6.3/os_client_config.egg-info/requires.txt
2015-08-13 11:15:04.000000000 +0200
+++ new/os-client-config-1.7.5/os_client_config.egg-info/requires.txt
2015-09-22 21:42:24.000000000 +0200
@@ -1,2 +1,3 @@
PyYAML>=3.1.0
appdirs>=1.3.0
+keystoneauth1>=1.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/os-client-config-1.6.3/requirements.txt
new/os-client-config-1.7.5/requirements.txt
--- old/os-client-config-1.6.3/requirements.txt 2015-08-13 11:14:33.000000000
+0200
+++ new/os-client-config-1.7.5/requirements.txt 2015-09-22 21:41:42.000000000
+0200
@@ -3,3 +3,4 @@
# process, which may cause wedges in the gate later.
PyYAML>=3.1.0
appdirs>=1.3.0
+keystoneauth1>=1.0.0