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 updateUserDatabagItem(itemName, itemObject): with ChefAPI("https://chef.5gdcs.com/sestra-pcs", opts.key, opts.client, ssl_verify=False): dbi = DataBagItem('users', itemName) dbi.update(itemObject)
def getDataBagItem(self, bag, bag_item_name): '''get databag item.''' from chef import DataBagItem try: return DataBagItem(bag, bag_item_name, api=self.api) except Exception as error: logging.error('%s failed to get bag item %s from %s', self.NAME, bag_item_name, bag) 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.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_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 test_direct_item(self): item = DataBagItem('test_1', 'item_1') self.assertEqual(item['test_attr'], 1) self.assertEqual(item['other'], 'foo')
def _get_databag_item(self, bag, bag_item_name): """get databag item.""" from chef import DataBagItem return DataBagItem(bag, bag_item_name, api=self.api_)