def _get(self, name, detailed=False): res = self._col.find_one({'n': name}, _field_spec(detailed)) if not res: raise errors.PoolDoesNotExist(name) return _normalize(res, detailed)
def _get(self, name, detailed=False): pool_key = utils.pools_name_hash_key(name) pool = self._client.hgetall(pool_key) if pool is None or len(pool) == 0: raise errors.PoolDoesNotExist(name) return self._normalize(pool, detailed)
def _get(self, name, detailed=False): stmt = sa.sql.select([tables.Pools]).where(tables.Pools.c.name == name) pool = self.driver.run(stmt).fetchone() if pool is None: raise errors.PoolDoesNotExist(name) return _normalize(pool, detailed)
def create(self, name, pool, project=None, capabilities=None): # NOTE(flaper87): Check if there are pools in this group. # Should there be a `group_exists` method? if not list(self._pools_ctrl.get_pools_by_group(pool)): raise errors.PoolDoesNotExist(pool) capabilities = {} if capabilities is None else capabilities self._col.update({'n': name, 'p': project}, {'$set': {'s': pool, 'c': capabilities}}, upsert=True)
def _update(self, name, **kwargs): names = ('uri', 'weight', 'group', 'options') fields = common_utils.fields(kwargs, names, pred=lambda x: x is not None, key_transform=lambda x: x[0]) assert fields, ('`weight`, `uri`, `group`, ' 'or `options` not found in kwargs') res = self._col.update({'n': name}, {'$set': fields}, upsert=False) if not res['updatedExisting']: raise errors.PoolDoesNotExist(name)
def create(self, name, pool, project=None, capabilities=None): cap = None if capabilities is None else utils.json_encode(capabilities) try: stmt = sa.sql.expression.insert(tables.Flavors).values( name=name, pool=pool, project=project, capabilities=cap) self.driver.connection.execute(stmt) except sa.exc.IntegrityError: if not self._pools_ctrl.get_group(pool): raise errors.PoolDoesNotExist(pool) # TODO(flaper87): merge update/create into a single # method with introduction of upsert self.update(name, pool=pool, project=project, capabilities=cap)
def _update(self, name, **kwargs): names = ('uri', 'weight', 'flavor', 'options') fields = common_utils.fields(kwargs, names, pred=lambda x: x is not None, key_transform=lambda x: x[0]) assert fields, ('`weight`, `uri`, ' 'or `options` not found in kwargs') flavor = fields.get('f') if flavor is not None and len(flavor) == 0: fields['f'] = None res = self._col.update_one({'n': name}, {'$set': fields}, upsert=False) if res.matched_count == 0: raise errors.PoolDoesNotExist(name)
def _update(self, name, **kwargs): # NOTE(cpp-cabrera): by pruning None-valued kwargs, we avoid # overwriting the existing options field with None, since that # one can be null. names = ('uri', 'weight', 'flavor', 'options') fields = common_utils.fields(kwargs, names, pred=lambda x: x is not None) assert fields, ('`weight`, `uri`, `flavor`, ' 'or `options` not found in kwargs') if 'options' in fields: fields['options'] = utils.json_encode(fields['options']) stmt = sa.sql.update(tables.Pools).where( tables.Pools.c.name == name).values(**fields) res = self.driver.run(stmt) if res.rowcount == 0: raise errors.PoolDoesNotExist(name)
def _check_pools_exists(self, pool_list): if pool_list is not None: for pool in pool_list: if not self._pools_ctrl.exists(pool): raise errors.PoolDoesNotExist(pool)