def execute(self):
        """
        migrate storage
        """
        repo = repository.PickleRepository(self.params.storage_path)

        clusters = [i[:-7] for i in os.listdir(self.params.storage_path) if i.endswith('.pickle')]

        if self.params.cluster:
            clusters = [x for x in clusters if x in self.params.cluster]

        if not clusters:
            print("No clusters")
            sys.exit(0)

        patch_cluster()
        for cluster in clusters:
            print("Cluster `%s`" % cluster)
            print("path: %s" % repo.storage_path + '/%s.pickle' % cluster)
            cl = repo.get(cluster)
            if cl._patches:
                print("Attributes changed: ")
                for attr, val in cl._patches.items():
                    print("  %s: %s -> %s" % (attr, val[0], val[1]))
            else:
                print("No upgrade needed")

            print("")
            if not self.params.dry_run:
                if cl._patches:
                    del cl._patches
                    print("Changes saved to disk")
                    cl.repository.save_or_update(cl)