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)
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
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)
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)
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)
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
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)