Esempio n. 1
0
    def log_commons_version(self):
        """Report version of commons for pod's forgerock product."""

        logger.debug('Check commons version for {name}:{commons_jar}'.format(
            name=self.name, commons_jar=AmsterPod.REPRESENTATIVE_COMMONS_JAR))
        test_temp = os.path.join(AmsterPod.LOCAL_TEMP, self.name)
        stdout, _ignored = kubectl.exec(Pod.NAMESPACE, [
            self.name, '-c', self.product_type, '--', 'find', AmsterPod.ROOT,
            '-name', 'amster-*.jar'
        ])
        amster_filepath = stdout[0]
        _head, tail = os.path.split(
            amster_filepath)  # get versioned amster jar name
        exploded_directory = os.path.join(test_temp, 'exploded')
        amster_jar_filepath = os.path.join(test_temp, tail)
        with zipfile.ZipFile(amster_jar_filepath) as commons_zip_file:
            commons_zip_file.extractall(exploded_directory)

        test_jar_properties_path = os.path.join(
            exploded_directory, 'META-INF', 'maven', 'org.forgerock.commons',
            AmsterPod.REPRESENTATIVE_COMMONS_JAR_NAME, 'pom.properties')
        logger.debug('Checking commons version in {path}'.format(
            path=test_jar_properties_path))
        assert os.path.isfile(
            test_jar_properties_path), 'Failed to find {path}'.format(
                path=test_jar_properties_path)

        with open(test_jar_properties_path) as file_pointer:
            lines = file_pointer.readlines()

        attribute_of_interest = {'version', 'groupId', 'artifactId'}
        os_metadata = Pod.get_metadata_of_interest('Commons', self.name, lines,
                                                   attribute_of_interest)
        Pod.print_table(os_metadata)
Esempio n. 2
0
    def version(self):
        """
        Return the product version information.
        :return: Dictionary
        """

        logger.test_step(
            'Report Amster version for pod {name}'.format(name=self.name))
        stdout, _ignored = kubectl.exec(Pod.NAMESPACE, [
            self.name, '--', './amster', '-c', self.product_type, '--version'
        ])
        version_text = stdout[0].strip()

        version_key = 'Amster OpenAM Shell v'
        build_key = ' build '
        revision_length = 10
        build_position = version_text.find(build_key)
        version = version_text[len(version_key):build_position]
        start = build_position + len(build_key)
        revision = version_text[start:start + revision_length]

        amster_metadata = {
            'TITLE': self.product_type,
            'DESCRIPTION': self.name,
            'VERSION_TEXT': version_text,
            'VERSION': version,
            'REVISION': revision
        }

        return amster_metadata
Esempio n. 3
0
    def log_os(self, attributes_of_interest):
        """
        Report Operating System on the pod.
        :param attributes_of_interest: Set of attribute keys to check.
        """

        logger.debug('Check OS version for {name}'.format(name=self.name))
        metadata, _ignored = kubectl.exec(Pod.NAMESPACE, [
            self.name, '-c', self.product_type, '--', 'cat', '/etc/os-release'
        ])
        os_metadata = Pod.get_metadata_of_interest('OS', self.name, metadata,
                                                   attributes_of_interest)
        Pod.print_table(os_metadata)
Esempio n. 4
0
    def are_legal_notices_present(self):
        """
        Check if the representative license file is present on the pod, otherwise assert.
        """

        file_of_interest = 'Forgerock_License.txt'
        stdout, _ignored = kubectl.exec(Pod.NAMESPACE, [
            self.name, '-c', self.product_type, '--', 'find', '.', '-name',
            file_of_interest
        ])
        file_path = stdout[0].strip()
        logger.debug('Found legal notice: {file}'.format(file=file_path))
        assert (file_path.endswith('legal-notices/{file}'.format(file=file_of_interest))),\
            'Unable to find {file_of_interest}'.format(file_of_interest=file_of_interest)
Esempio n. 5
0
    def log_jdk(self, attributes_of_interest):
        """
        Report Java versions for pod.
        :param attributes_of_interest: Set of attribute keys to check.
        """

        logger.debug('Check Jaa version for {name}'.format(name=self.name))
        _ignored, metadata = kubectl.exec(
            Pod.NAMESPACE,
            [self.name, '-c', self.product_type, '--', 'java', '-version'
             ])  # TODO: why stderr
        java_metadata = Pod.get_metadata_of_interest('Java', self.name,
                                                     metadata,
                                                     attributes_of_interest)
        Pod.print_table(java_metadata)
Esempio n. 6
0
    def version(self):
        """
        Return the product version information.
        :return: Dictionary
        """

        logger.test_step(
            'Report IG version for pod {name}'.format(name=self.name))

        test_jar_properties_path = os.path.join(IGPod.ROOT, 'webapps', 'ROOT',
                                                'META-INF', 'maven',
                                                'org.forgerock.openig',
                                                'openig-war', 'pom.properties')
        attributes_of_interest = {'version', 'groupId', 'artifactId'}
        metadata, _ignored = kubectl.exec(Pod.NAMESPACE, [
            self.name, '-c', self.product_type, '--', 'cat',
            test_jar_properties_path
        ])
        version_metadata = Pod.get_metadata_of_interest(
            self.product_type, self.name, metadata, attributes_of_interest)
        return version_metadata
Esempio n. 7
0
 def log_versioned_commons_jar(self, lib_path, jar_name):
     """
     Report version of commons; obtained from the name of a sample commons .jar.
     :param lib_path: Path to jar library.
     :param jar_name: Jar file to check.
     """
     logger.debug(
         'Check commons version for {name}*.jar'.format(name=jar_name))
     stdout, _ignored = kubectl.exec(Pod.NAMESPACE, [
         self.name, '-c', self.product_type, '--', 'find', lib_path,
         '-name', jar_name + '-*.jar'
     ])
     config_filepath = stdout[0]  # first line of output
     start = config_filepath.find(jar_name)
     end = config_filepath.find('.jar')
     commons_version = config_filepath[start + len(jar_name) + 1:end]
     metadata = {
         'TITLE': "Commons",
         'DESCRIPTION': self.name,
         'VERSION': commons_version,
         'FILE': config_filepath
     }
     Pod.print_table(metadata)