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)
Beispiel #3
0
 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 []
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
 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
Beispiel #7
0
 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
Beispiel #8
0
 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)
Beispiel #10
0
 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)
Beispiel #11
0
    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
Beispiel #12
0
    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')
Beispiel #14
0
 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)
Beispiel #16
0
 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)
Beispiel #19
0
 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'])
Beispiel #23
0
 def test_list(self):
     bags = DataBag.list(self.api)
     self.assertIn('test_1', bags)
     self.assertIsInstance(bags['test_1'], DataBag)