def model_s3buckets(self, s3buckets, log): log.debug('model_s3buckets data: {}'.format(s3buckets)) rm = [] rm_owner = [] rm_bucket = [] for entry in s3buckets: soup = BeautifulSoup(entry['body'], 'xml') # TODO: What if the soup is empty ? om_owner = ObjectMap() id = 'bucketaccount_{}'.format(soup.find("Owner").find("ID").text) om_owner.id = self.prepId(id) om_owner.title = soup.find("Owner").find("DisplayName").text rm_owner.append(om_owner) comp_id = 'scalityS3BucketAccounts/{}'.format(om_owner.id) s3bucket_maps = [] buckets_list = soup.find_all(name="Bucket") for s3bucket in buckets_list: bucket_name = s3bucket.Name.text om_s3bucket = ObjectMap() id = 'bucket_{}_{}'.format(om_owner.title, bucket_name) om_s3bucket.id = self.prepId(id) om_s3bucket.title = bucket_name om_s3bucket.bucket_name = bucket_name om_s3bucket.creation_date = s3bucket.CreationDate.text om_s3bucket.key_index = int(entry['key_index']) s3bucket_maps.append(om_s3bucket) rm_bucket.append( RelationshipMap( compname=comp_id, relname='scalityS3Buckets', modname='ZenPacks.community.Scality.ScalityS3Bucket', objmaps=s3bucket_maps)) rm.append( RelationshipMap( relname='scalityS3BucketAccounts', modname='ZenPacks.community.Scality.ScalityS3BucketAccount', compname='', objmaps=rm_owner)) rm.extend(rm_bucket) return rm