<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def read_deployment_properties(self):
 """Reads the deployment properties file This method reads the deployment properties file into the "properties" dictionary object. :return: None :raises: DeploymentError """

        log = logging.getLogger(self.cls_logger + '.read_deployment_properties')

        # Ensure deployment properties file exists
        self.properties_file = os.path.join(self.deployment_home, 'deployment.properties')
        if not os.path.isfile(self.properties_file):
            msg = 'Deployment properties file not found: {f}'.format(f=self.properties_file)
            log.error(msg)
            raise DeploymentError(msg)
        log.info('Found deployment properties file: {f}'.format(f=self.properties_file))

        log.info('Reading deployment properties...')
        try:
            f = open(self.properties_file)
        except (IOError, OSError):
            _, ex, trace = sys.exc_info()
            msg = 'Could not open file {file} to read property: {prop}'.format(
                file=self.properties_file,
                prop=property)
            log.error(msg)
            raise DeploymentError, msg, trace

        for line in f:
            log.debug('Processing deployment properties file line: {l}'.format(l=line))
            if not isinstance(line, basestring):
                log.debug('Skipping line that is not a string: {l}'.format(l=line))
                continue
            elif line.startswith('#'):
                log.debug('Skipping line that is a comment: {l}'.format(l=line))
                continue
            elif '=' in line:
                split_line = line.strip().split('=', 1)
                if len(split_line) == 2:
                    prop_name = split_line[0].strip()
                    prop_value = split_line[1].strip()
                    if prop_name is None or not prop_name or prop_value is None or not prop_value:
                        log.debug('Property name <{n}> or value <v> is none or blank, not including it'.format(
                                n=prop_name, v=prop_value))
                    else:
                        log.debug('Adding property {n} with value {v}...'.format(n=prop_name, v=prop_value))
                        self.properties[prop_name] = prop_value
                else:
                    log.debug('Skipping line that did not split into 2 part on an equal sign...')
        log.info('Successfully read in deployment properties')