Esempio n. 1
0
def verify_object_versions_integrity(client, bucket, key, from_version_id, to_version_id):
    def raise_exception(msg):
        raise IntegrityCheckFailedError(msg, client, bucket, key, to_version_id)

    conflict_error_template = "A {} ({}) was detected for the given object between read and write operations ({} and {})."
    not_found_error_template = "Previous version ({}) has been deleted."

    object_versions = retry_wrapper(client.list_object_versions)(
        Bucket=bucket,
        Prefix=key,
        VersionIdMarker=to_version_id,
        KeyMarker=key,
        MaxKeys=1)

    versions = object_versions.get('Versions', [])
    delete_markers = object_versions.get('DeleteMarkers', [])
    all_versions = versions + delete_markers

    if not len(all_versions):
        return raise_exception(not_found_error_template.format(from_version_id))

    prev_version = all_versions[0]
    prev_version_id = prev_version['VersionId']

    if prev_version_id != from_version_id:
        conflicting_version_type = 'delete marker' if 'ETag' not in prev_version else 'version'
        return raise_exception(conflict_error_template.format(
            conflicting_version_type,
            prev_version_id,
            from_version_id,
            to_version_id))

    return True
Esempio n. 2
0
project_path = os.path.dirname(__file__)

logger = logging.getLogger("roc_oct")

file_handler = handlers.RotatingFileHandler(os.path.join(
    project_path, "roc_oct.log"),
                                            maxBytes=1024 * 1024 * 10,
                                            backupCount=5)

logger.addHandler(file_handler)

logger.setLevel(logging.DEBUG)

get = retry_wrapper(5,
                    error_handler=lambda *args, **kwargs: logger.debug(
                        "error in requests.get: %s" % str(args)))(get)

oct_adr = "http://octopus.app.jinanlongen.com/store_tasks/tb_new_arrival_search"

oct_params = dict(
    tuple(line.strip().split(":", 1)) for line in """utf8:✓
upload_date:计划上新时间
planned_upload_step_end_at:
store_id:
status:请选择
cycle_grade:请选择
store_task_id:""".split("\n"))

oct_headers = {"Cookie": "_session_id=47d56eeb9d0b817e0a9766cae411d81b"}