def _create(self, version=None): if not version: # TODO(prazumovsky): remove all unexpected calls from tests and # add default_version after that. version = self.NOVA_API_VERSION endpoint_type = self._get_client_option(CLIENT_NAME, 'endpoint_type') extensions = nc.discover_extensions(version) args = { 'session': self.context.keystone_session, 'extensions': extensions, 'endpoint_type': endpoint_type, 'service_type': self.COMPUTE, 'region_name': self._get_region_name(), 'http_log_debug': self._get_client_option(CLIENT_NAME, 'http_log_debug') } client = nc.Client(version, **args) # NOTE: check for microversion availability if version in self.validate_versions: try: client.versions.get_current() except exceptions.NotAcceptable: raise exception.InvalidServiceVersion(service=self.COMPUTE, version=version) return client
def client(self, version=None): if not version: version = self.default_version if version in self._client_instances: if (cfg.CONF.reauthentication_auth_method == 'trusts' and self.context.auth_plugin.auth_ref.will_expire_soon( cfg.CONF.stale_token_duration)): # If the token is near expiry, force creating a new client, # which will get a new token via another call to auth_token # We also have to invalidate all other cached clients self.clients.invalidate_plugins() else: return self._client_instances[version] # Back-ward compatibility if version is None: self._client_instances[version] = self._create() else: if version not in self.supported_versions: raise heat_exception.InvalidServiceVersion( version=version, service=self._get_service_name()) self._client_instances[version] = self._create(version=version) return self._client_instances[version]
def _test_validate(self, key_type=None, user=None, nc_version=None): template = copy.deepcopy(self.kp_template) validate_props = [] if key_type: template['resources']['kp']['properties']['type'] = key_type validate_props.append('type') if user: template['resources']['kp']['properties']['user'] = user validate_props.append('user') stack = utils.parse_stack(template) definition = stack.t.resource_definitions(stack)['kp'] kp_res = keypair.KeyPair('kp', definition, stack) self.patchobject(nova.NovaClientPlugin, '_create', side_effect=exception.InvalidServiceVersion( service='compute', version=nc_version)) error = self.assertRaises(exception.StackValidationFailed, kp_res.validate) msg = (('Cannot use "%(prop)s" properties - nova does not support: ' 'Invalid service compute version %(ver)s') % { 'prop': validate_props, 'ver': nc_version }) self.assertIn(msg, six.text_type(error))
def client(self, version=None): if version is None: version = self.get_max_microversion() elif not self.is_version_supported(version): raise exception.InvalidServiceVersion( version=version, service=self._get_service_name()) if version in self._client_instances: return self._client_instances[version] self._client_instances[version] = self._create(version=version) return self._client_instances[version]
def test_validate(self): template = copy.deepcopy(self.kp_template) template['resources']['kp']['properties']['type'] = 'x509' stack = utils.parse_stack(template) definition = stack.t.resource_definitions(stack)['kp'] kp_res = keypair.KeyPair('kp', definition, stack) self.patchobject(nova.NovaClientPlugin, '_create', side_effect=exception.InvalidServiceVersion( service='compute', version='2.2')) error = self.assertRaises(exception.StackValidationFailed, kp_res.validate) self.assertIn( 'Cannot use "type" property - nova does not support it: ' 'Invalid service compute version 2.2', six.text_type(error))
def client(self, version=None): if not version: version = self.default_version if version in self._client_instances: return self._client_instances[version] # Back-ward compatibility if version is None: self._client_instances[version] = self._create() else: if version not in self.supported_versions: raise heat_exception.InvalidServiceVersion( version=version, service=self._get_service_name()) self._client_instances[version] = self._create(version=version) return self._client_instances[version]