Beispiel #1
0
    def __create_project_version__(self):
        """
        Create, add required attributes to, and commit a new project version
        :return: The new project_version_id if successful. Otherwise, None.
        """
        api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False)
        try:
            # It's kinda dumb for this api call to require both project name and id?
            response = api.create_project_version(
                project_name=self.application_name,
                project_id=self.__get_project_id__(self.application_name),
                project_template=self.project_template,
                version_name=self.fortify_version,
                description=self.__project_version_description__())

            if not response.success:
                raise ValueError("Failed to create a new project version")

            project_version_id = response.data['data']['id']

            # At Target, only one attribute is required
            response = api.add_project_version_attribute(
                project_version_id=project_version_id,
                attribute_definition_id=self.__get_attribute_definition_id__(
                    search_expression='name:"CI Number"'),
                value='New WebBreaker Application',
                values=[])
            if not response.success:
                raise ValueError(
                    "Failed to create required project version attribute")

            response = api.commit_project_version(
                project_version_id=project_version_id)
            if not response.success:
                raise ValueError("Failed to commit new project version")
                #Logger.app.debug("Created new project version id {0}".format(project_version_id))
            return project_version_id

        except Exception as e:
            Logger.app.critical(
                "Exception trying to create project version. {0}".format(
                    e.message))

        return None
Beispiel #2
0
    def __create_new_project_version__(self):
        api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False)

        try:
            # It's kinda dumb for this api call to require both project name and id?
            response = api.create_new_project_version(project_name=self.application_name,
                                                      project_template=self.project_template,
                                                      version_name=self.fortify_version,
                                                      description=self.__project_version_description__())

            if not response.success:
                raise ValueError("Failed to create a new project version")

            project_version_id = response.data['data']['id']
            project_id = response.data['data']['project']['id']

            """
            At Target, only one attribute is required
            TODO: Treatment of all required attributes development_strategy, accessability, custom_attribute, etc. 
            may accept null values (unconfirmed?), additional conditions need to be placed here to successfully complete this response.
            For example default SSC installations require attributeDefinitionId 1, 5, 6, and 7, however other deployments may have a single
            custom_attribute as is implemented below.  See also 
            https://github.com/target/fortifyapi/blob/134477ef708e63d8c7b555741f5c69610abad920/fortifyapi/fortify.py#L105
            search_expression='name:"CI Number"'
            """
            response = api.add_project_version_attribute(project_version_id=project_version_id,
                                                         attribute_definition_id=self.__get_attribute_definition_id__(
                                                             search_expression='name:"CI Number"'),
                                                         value='New WebBreaker Application',
                                                         values=[])
            if not response.success:
                raise ValueError("Failed to create required project version attribute")

            response = api.commit_project_version(project_version_id=project_version_id)
            if not response.success:
                raise ValueError("Failed to commit new project version")
                # Logger.app.debug("Created new project version id {0}".format(project_version_id))
        except (AttributeError, UnboundLocalError) as e:
            Logger.app.critical("Exception creating project version. {0}".format(e))

        return project_version_id