コード例 #1
0
ファイル: publisher.py プロジェクト: credativ/pulp
    def publish(self, units):
        """
        Publish the specified units.
        Writes the units.json file and symlinks each of the files associated
        to the unit.storage_path.  Publishing is staged in a temporary directory and
        must use commit() to make the publishing permanent.
        :param units: A list of units to publish.
        :type units: iterable
        :return: The absolute path to the manifest.
        :rtype: str
        """
        # make the parent dir and a temp dir within it
        parent_path = os.path.normpath(os.path.join(self.publish_dir, '../'))
        pathlib.mkdir(parent_path)
        self.tmp_dir = mkdtemp(dir=parent_path)

        with UnitWriter(self.tmp_dir) as writer:
            for unit in units:
                self.publish_unit(unit)
                writer.add(unit)
        manifest_id = str(uuid4())
        manifest = Manifest(self.tmp_dir, manifest_id)
        manifest.units_published(writer)
        manifest.write()
        self.staged = True
        return manifest.path
コード例 #2
0
ファイル: publisher.py プロジェクト: zjhuntin/pulp
    def publish(self, units):
        """
        Publish the specified units.
        Writes the units.json file and symlinks each of the files associated
        to the unit.storage_path.  Publishing is staged in a temporary directory and
        must use commit() to make the publishing permanent.
        :param units: A list of units to publish.
        :type units: iterable
        :return: The absolute path to the manifest.
        :rtype: str
        """
        # make the parent dir and a temp dir within it
        parent_path = os.path.normpath(os.path.join(self.publish_dir, '../'))
        pathlib.mkdir(parent_path)
        self.tmp_dir = mkdtemp(dir=parent_path)

        with UnitWriter(self.tmp_dir) as writer:
            for unit in units:
                self.publish_unit(unit)
                writer.add(unit)
        manifest_id = str(uuid4())
        manifest = Manifest(self.tmp_dir, manifest_id)
        manifest.units_published(writer)
        manifest.write()
        self.staged = True
        return manifest.path
コード例 #3
0
ファイル: test_manifest.py プロジェクト: domcleal/pulp
 def test_write(self):
     # Test
     manifest = Manifest()
     units = []
     for i in range(0, self.NUM_UNITS):
         units.append({i:i+1})
     manifest.write(self.tmp_dir, units)
     # Verify
     path = os.path.join(self.tmp_dir, Manifest.FILE_NAME)
     self.assertTrue(os.path.exists(path))
     fp = gzip.open(path)
     s = fp.read()
     units_in = json.loads(s)
     self.verify(units, units_in)
コード例 #4
0
ファイル: test_manifest.py プロジェクト: domcleal/pulp
 def test_round_trip(self):
     # Test
     manifest = Manifest()
     units = []
     for i in range(0, self.NUM_UNITS):
         units.append({i:i+1})
     manifest.write(self.tmp_dir, units)
     cfg = DownloaderConfig('http')
     downloader = factory.get_downloader(cfg)
     manifest = Manifest()
     path = os.path.join(self.tmp_dir, Manifest.FILE_NAME)
     url = 'file://%s' % path
     units_in = manifest.read(url, downloader)
     # Verify
     self.verify(units, units_in)
コード例 #5
0
ファイル: publisher.py プロジェクト: cliffy94/pulp
 def publish(self, units):
     """
     Publish the specified units.
     Writes the units.json file and symlinks each of the files associated
     to the unit.storage_path.  Publishing is staged in a temporary directory and
     must use commit() to make the publishing permanent.
     :param units: A list of units to publish.
     :type units: iterable
     :return: The absolute path to the manifest.
     :rtype: str
     """
     pathlib.mkdir(self.publish_dir)
     self.tmp_dir = mkdtemp(dir=self.publish_dir)
     units_path = pathlib.join(self.tmp_dir, UNITS_FILE_NAME)
     manifest_path = pathlib.join(self.tmp_dir, MANIFEST_FILE_NAME)
     with UnitWriter(units_path) as writer:
         for unit in units:
             self.publish_unit(unit)
             writer.add(unit)
     manifest_id = str(uuid4())
     manifest = Manifest(manifest_id)
     manifest.set_units(writer)
     manifest_path = manifest.write(manifest_path)
     self.staged = True
     return manifest_path
コード例 #6
0
 def publish(self, units):
     """
     Publish the specified units.
     Writes the units.json file and symlinks each of the files associated
     to the unit.storage_path.  Publishing is staged in a temporary directory and
     must use commit() to make the publishing permanent.
     :param units: A list of units to publish.
     :type units: iterable
     :return: The absolute path to the manifest.
     :rtype: str
     """
     pathlib.mkdir(self.publish_dir)
     self.tmp_dir = mkdtemp(dir=self.publish_dir)
     units_path = pathlib.join(self.tmp_dir, UNITS_FILE_NAME)
     manifest_path = pathlib.join(self.tmp_dir, MANIFEST_FILE_NAME)
     with UnitWriter(units_path) as writer:
         for unit in units:
             self.publish_unit(unit)
             writer.add(unit)
     manifest_id = str(uuid4())
     manifest = Manifest(manifest_id)
     manifest.set_units(writer)
     manifest_path = manifest.write(manifest_path)
     self.staged = True
     return manifest_path
コード例 #7
0
 def publish(self, units):
     """
     Publish the specified units.
     Writes the units.json file and symlinks each of the
     files associated to the unit.storage_path.
     :param units: A list of units to publish.
     :type units: iterable
     :return: The path to the written manifest.
     :rtype: str
     """
     manifest_path = super(self.__class__, self).publish(units)
     manifest = Manifest()
     manifest.read(manifest_path)
     manifest.publishing_details[constants.BASE_URL] = \
         pathlib.url_join(self.base_url, self.alias[0], self.repo_id)
     manifest.write(manifest_path)
     return manifest_path
コード例 #8
0
ファイル: publisher.py プロジェクト: cliffy94/pulp
 def publish(self, units):
     """
     Publish the specified units.
     Writes the units.json file and symlinks each of the
     files associated to the unit.storage_path.
     :param units: A list of units to publish.
     :type units: iterable
     :return: The path to the written manifest.
     :rtype: str
     """
     manifest_path = super(self.__class__, self).publish(units)
     manifest = Manifest()
     manifest.read(manifest_path)
     manifest.publishing_details[constants.BASE_URL] = \
         pathlib.url_join(self.base_url, self.alias[0], self.repo_id)
     manifest.write(manifest_path)
     return manifest_path
コード例 #9
0
ファイル: publisher.py プロジェクト: bartwo/pulp
 def write_manifest(self, units):
     """
     Write the manifest (units.json) for the specified list of units.
     :param units: A list of units.
     :type units: list
     :return: The absolute path to the written manifest file.
     :rtype: str
     """
     manifest = Manifest()
     dir_path = join(self.publish_dir, self.repo_id)
     mkdir(dir_path)
     return manifest.write(dir_path, units)
コード例 #10
0
ファイル: test_manifest.py プロジェクト: bartwo/pulp
 def test_write(self):
     # Test
     manifest = Manifest()
     units = []
     for i in range(0, self.NUM_UNITS):
         units.append({i: i + 1})
     manifest.write(self.tmp_dir, units)
     # Verify
     path = os.path.join(self.tmp_dir, Manifest.FILE_NAME)
     self.assertTrue(os.path.exists(path))
     fp = gzip.open(path)
     s = fp.read()
     fp.close()
     manifest = json.loads(s)
     units_in = []
     for unit_file in manifest['unit_files']:
         path = os.path.join(self.tmp_dir, unit_file)
         fp = gzip.open(path)
         units_in.extend(json.load(fp))
         fp.close()
     self.assertEqual(manifest['total_units'], self.NUM_UNITS)
     self.verify(units, units_in)
コード例 #11
0
ファイル: publisher.py プロジェクト: tomlanyon/pulp
    def publish(self, units):
        """
        Publish the specified units.
        Writes the units.json file and symlinks each of the
        files associated to the unit.storage_path.
        :param units: A list of units to publish.
        :type units: iterable
        """

        dir_path = join(self.publish_dir, self.repo_id)
        units_path = os.path.join(dir_path, UNITS_FILE_NAME)
        manifest_path = os.path.join(dir_path, MANIFEST_FILE_NAME)
        mkdir(dir_path)
        with UnitWriter(units_path) as writer:
            for unit in units:
                self.link_unit(unit)
                writer.add(unit)
        manifest_id = str(uuid4())
        manifest = Manifest(manifest_id)
        manifest.set_units(writer)
        manifest_path = manifest.write(manifest_path)
        return manifest_path
コード例 #12
0
ファイル: publisher.py プロジェクト: tomlanyon/pulp
    def publish(self, units):
        """
        Publish the specified units.
        Writes the units.json file and symlinks each of the
        files associated to the unit.storage_path.
        :param units: A list of units to publish.
        :type units: iterable
        """

        dir_path = join(self.publish_dir, self.repo_id)
        units_path = os.path.join(dir_path, UNITS_FILE_NAME)
        manifest_path = os.path.join(dir_path, MANIFEST_FILE_NAME)
        mkdir(dir_path)
        with UnitWriter(units_path) as writer:
            for unit in units:
                self.link_unit(unit)
                writer.add(unit)
        manifest_id = str(uuid4())
        manifest = Manifest(manifest_id)
        manifest.set_units(writer)
        manifest_path = manifest.write(manifest_path)
        return manifest_path