def get_databag_items(self, bag_name): if not self.authenticated: return [] bag_name = self._bag_adapter.revert(bag_name) bag = DataBag(bag_name, api=self._api) if not bag.exists: return None return [(key, to_display_domain(key)) for key in sorted(bag.keys())]
def test_create_item(self): value = self.random() bag_name = self.random() bag = DataBag.create(bag_name) self.register(bag) item_name = self.random() item = DataBagItem.create(bag, item_name, foo=value) self.assertIn('foo', item) self.assertEqual(item['foo'], value) self.assertIn(item_name, bag) bag2 = DataBag(bag_name) self.assertIn(item_name, bag2) item2 = bag2[item_name] self.assertIn('foo', item) self.assertEqual(item['foo'], value)
def get_databag_list(self, databag=''): #returns a list of all available data bags on the chef_server data_bag_list = [] try: data_bags = DataBag(databag,self.api) for items in data_bags.list(self.api): data_bag_list.append(items) if not data_bag_list: raise Exception, "No Data bags items found" else: return data_bag_list except Exception as exp_object: exc_type, exc_obj, exc_tb = sys.exc_info() self.ah_obj.print_exception("chef_helper.py", "get_databag_list()", exp_object, exc_type, exc_obj, exc_tb) return []
def getTargetSystems(self, oses): '''get target systems.''' from chef import DataBag try: databags = DataBag.list(api=self.api) except Exception as error: logging.error('%s failed to get the databags', self.NAME) logging.exception(error) raise error target_systems = {} for os_version in oses: target_systems[os_version] = [] for databag in databags: target_system = databag global_databag_item = self.getGlobalDataBagItem( self.getDataBag(target_system)) support_oses = global_databag_item.get('support_oses', []) for os_version in oses: for support_os in support_oses: if fnmatch.fnmatch(os_version, support_os): target_systems[os_version].append(target_system) break return target_systems
def get_databag_attributes(self, atlas_set_header, databag_set_name): """ Returns all items of a databag given the header and databag name in the atlas config file. """ data_bag_attr = {} base_path = self.ah_obj.get_atlas_config_data("chef_module", 'chef-base-path') api = chef.autoconfigure(base_path) chef_databags = self.ah_obj.get_atlas_config_data( atlas_set_header, databag_set_name)[1] for databag in chef_databags.keys(): data_bag = DataBag(databag, api) key_list = {} items = chef_databags[databag]['items'].keys() for item_index in items: key_list = chef_databags[databag]['items'][item_index]['keys'] chef_databag_item = DataBagItem(databag, item_index, api) for item_keys, item_values in chef_databag_item.iteritems(): if item_keys in key_list: data_bag_attr[item_keys] = item_values elif type(item_values) == dict: data_bag_attr[item_keys] = {} for key in key_list: attr_values = self.ah_obj.get_nested_attribute_values( item_values, key) data_bag_attr[item_keys][key] = attr_values return data_bag_attr
def getDataBag(self, target_system): '''get databag.''' from chef import DataBag try: return DataBag(target_system, api=self.api) except Exception as error: logging.error('%s failed to get databag of %s', self.NAME, target_system) logging.exception(error) raise error
def test_set_item(self): value = self.random() value2 = self.random() bag_name = self.random() bag = DataBag.create(bag_name, self.api) self.register(bag) item_name = self.random() item = DataBagItem.create(bag, item_name, self.api, foo=value) item['foo'] = value2 item.save() self.assertEqual(item['foo'], value2) item2 = DataBagItem(bag, item_name, self.api) self.assertEqual(item2['foo'], value2)
def test_set_item(self): value = self.random() value2 = self.random() bag_name = self.random() bag = DataBag.create(bag_name) self.register(bag) item_name = self.random() item = DataBagItem.create(bag, item_name, foo=value) item['foo'] = value2 item.save() self.assertEqual(item['foo'], value2) item2 = DataBagItem(bag, item_name) self.assertEqual(item2['foo'], value2)
def test_create_item(self): value = self.random() bag_name = self.random() bag = DataBag.create(bag_name, self.api) self.register(bag) item_name = self.random() item = DataBagItem.create(bag, item_name, self.api, foo=value) self.assertIn('foo', item) self.assertEqual(item['foo'], value) self.assertIn(item_name, bag) bag2 = DataBag(bag_name, self.api) self.assertIn(item_name, bag2) item2 = bag2[item_name] self.assertIn('foo', item) self.assertEqual(item['foo'], value)
def get_target_systems(self, oses): """get target systems.""" from chef import DataBag databags = DataBag.list(api=self.api_) target_systems = {} for os_version in oses: target_systems[os_version] = [] for databag in databags: target_system = databag global_databag_item = self._get_global_databag_item( self._get_databag(target_system)) support_oses = global_databag_item['support_oses'] for os_version in oses: for support_os in support_oses: if fnmatch.fnmatch(os_version, support_os): target_systems[os_version].append(target_system) break return target_systems
def test_direct_item_bag(self): bag = DataBag('test_1') item = DataBagItem(bag, 'item_1') self.assertEqual(item['test_attr'], 1) self.assertEqual(item['other'], 'foo')
def _get_databag(self, target_system): """get databag.""" from chef import DataBag return DataBag(target_system, api=self.api_)
def create_databag(self, bag_name): if not self.authenticated: return bag_name = self._bag_adapter.revert(bag_name) return DataBag.create(bag_name, api=self._api)
def test_keys(self): bag = DataBag('test_1', self.api) self.assertItemsEqual(list(bag.keys()), ['item_1', 'item_2']) self.assertItemsEqual(iter(bag), ['item_1', 'item_2'])
def get_databags(self): if not self.authenticated: return [] vals = self._bag_adapter.filter(list(DataBag.list(api=self._api))) return sorted(vals)
def test_list(self): bags = DataBag.list() self.assertIn('test_1', bags) self.assertIsInstance(bags['test_1'], DataBag)
def test_create_bag(self): name = self.random() bag = DataBag.create(name, self.api) self.register(bag) self.assertIn(name, DataBag.list(self.api))
def test_create_bag(self): name = self.random() bag = DataBag.create(name) self.register(bag) self.assertIn(name, DataBag.list())
def test_item(self): bag = DataBag('test_1') item = bag['item_1'] self.assertEqual(item['test_attr'], 1) self.assertEqual(item['other'], 'foo')
def test_keys(self): bag = DataBag('test_1') self.assertItemsEqual(bag.keys(), ['item_1', 'item_2']) self.assertItemsEqual(iter(bag), ['item_1', 'item_2'])
def test_list(self): bags = DataBag.list(self.api) self.assertIn('test_1', bags) self.assertIsInstance(bags['test_1'], DataBag)