Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Increase original resource ID max length to 289 chars #1438

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Copyright 2025 The Gnocchi Developers
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#

"""Increase original resource ID max length

Revision ID: 94544ca86c7e
Revises: 18fff4509e3e
Create Date: 2025-01-15 22:12:53.822748

"""

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '94544ca86c7e'
down_revision = '18fff4509e3e'
branch_labels = None
depends_on = None


def upgrade():
op.alter_column("resource", "original_resource_id",
type_=sa.String(289),
nullable=False,
existing_type=sa.String(255),
existing_nullable=False)
op.alter_column("resource_history", "original_resource_id",
type_=sa.String(289),
nullable=False,
existing_type=sa.String(255),
existing_nullable=False)
2 changes: 1 addition & 1 deletion gnocchi/indexer/sqlalchemy_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ def type(cls):
ended_at = sqlalchemy.Column(types.TimestampUTC)
user_id = sqlalchemy.Column(sqlalchemy.String(255))
project_id = sqlalchemy.Column(sqlalchemy.String(255))
original_resource_id = sqlalchemy.Column(sqlalchemy.String(255),
original_resource_id = sqlalchemy.Column(sqlalchemy.String(289),
nullable=False)


Expand Down
6 changes: 3 additions & 3 deletions gnocchi/tests/functional/gabbits/transformedids.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,13 @@ tests:
archive_policy_name: medium
status: 400
response_strings:
- transformable resource id >255 max allowed characters for dictionary value
- transformable resource id >289 max allowed characters for dictionary value

- name: post long non uuid resource id
POST: $LAST_URL
data:
# 255 char string
id: four score and seven years ago we the people of the United States of America i have a dream it is the courage to continue that counts four score and seven years ago we the people of the United States of America i have a dream it is the courage to continue
# 289 char string
id: four score and seven years ago we the people of the United States of America i have a dream it is the courage to continue that counts four score and seven years ago we the people of the United States of America i have a dream it is the courage to continue that counts our score and seven y
user_id: 0fbb231484614b1a80131fc22f6afc9c
project_id: f3d41b770cc14f0bb94a1d5be9c0e3ea
metrics:
Expand Down
4 changes: 2 additions & 2 deletions gnocchi/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ def ResourceUUID(value, creator):
try:
return uuid.UUID(value)
except ValueError:
if len(value) <= 255:
if len(value) <= 289:
if creator is None:
creator = "\x00"
return uuid.uuid5(RESOURCE_ID_NAMESPACE,
value + "\x00" + creator)
raise ValueError(
'transformable resource id >255 max allowed characters')
'transformable resource id >289 max allowed characters')


def UUID(value):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
features:
- |
The maximum length of the resource ID when creating new resources has been
increased from 255 to 289 characters. This extra length allows Gnocchi to
accommodate Swift container resources generated by Ceilometer with the
maximum container name length of 256 characters.
Loading