Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
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
Ejemplo n.º 3
0
    def remove(self, bag_name, item_name=None):
        if not self.authenticated:
            return

        bag_name = self._bag_adapter.revert(bag_name)
        if item_name:
            obj = DataBagItem(bag_name, item_name, api=self._api)
        else:
            obj = DataBag(bag_name, api=self._api)

        if obj.exists:
            obj.delete(api=self._api)
 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)
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
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_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)
Ejemplo n.º 8
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
Ejemplo n.º 9
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)
Ejemplo n.º 10
0
    def edit_databag_item(self, bag_name, old_id, data):
        if not self.authenticated:
            return

        bag_name = self._bag_adapter.revert(bag_name)

        new_id = data.get('id')
        item = DataBagItem(bag_name, new_id, api=self._api)
        item.raw_data = data
        item.save()

        # change in ID -> remove previous item
        if new_id != old_id:
            obj = DataBagItem(bag_name, old_id, api=self._api)
            if obj.exists:
                obj.delete(api=self._api)
Ejemplo n.º 11
0
    def create_databag_item(self, bag_name, item_id, data={}):
        if not self.authenticated:
            return

        bag_name = self._bag_adapter.revert(bag_name)
        return DataBagItem.create(bag_name, item_id, api=self._api, **data)
 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')
Ejemplo n.º 14
0
 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_)