Skip to content

Commit bb614f4

Browse files
authored
Merge pull request #125 from mtruj013/new-pockets
Add new pocket options
2 parents 32865b5 + ad9e96f commit bb614f4

File tree

5 files changed

+72
-2
lines changed

5 files changed

+72
-2
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"""empty message
2+
3+
Revision ID: 1e0a9c001320
4+
Revises: 5c1128073317
5+
Create Date: 2023-03-28 17:09:04.546775
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
11+
12+
# revision identifiers, used by Alembic.
13+
revision = '1e0a9c001320'
14+
down_revision = '5c1128073317'
15+
branch_labels = None
16+
depends_on = None
17+
18+
# Enum 'type' for PostgreSQL
19+
enum_name = 'pockets'
20+
# Set temporary enum 'type' for PostgreSQL
21+
tmp_enum_name = 'tmp_' + enum_name
22+
23+
# Options for Enum
24+
old_options = ('security', 'updates', 'esm-infra', 'esm-apps')
25+
new_options = ('security', 'updates', 'esm-infra', 'esm-apps', 'soss', 'fips', 'fips-updates', 'ros-esm')
26+
27+
# Create enum fields
28+
old_type = sa.Enum(*old_options, name=enum_name)
29+
new_type = sa.Enum(*new_options, name=enum_name)
30+
31+
32+
def upgrade():
33+
# Rename current enum type to tmp_
34+
op.execute('ALTER TYPE ' + enum_name + ' RENAME TO ' + tmp_enum_name)
35+
# Create new enum type in db
36+
new_type.create(op.get_bind())
37+
# Update column to use new enum type
38+
op.execute('ALTER TABLE status ALTER COLUMN pocket TYPE ' + enum_name + ' USING pocket::text::' + enum_name)
39+
# Drop old enum type
40+
op.execute('DROP TYPE ' + tmp_enum_name)
41+
42+
43+
def downgrade():
44+
# Instantiate db query
45+
status = sa.sql.table('status', sa.Column('pocket', new_type, nullable=False))
46+
# Rename enum type to tmp_
47+
op.execute('ALTER TYPE ' + enum_name + ' RENAME TO ' + tmp_enum_name)
48+
# Create enum type using old values
49+
old_type.create(op.get_bind())
50+
# Set enum type as type for pocket column
51+
op.execute('ALTER TABLE status ALTER COLUMN pocket TYPE ' + enum_name + ' USING pocket::text::' + enum_name)
52+
# Drop temp enum type
53+
op.execute('DROP TYPE ' + tmp_enum_name)

tests/fixtures/models.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,10 @@ def make_models():
4141
)
4242

4343
status = Status(
44-
status="pending", cve=cve, package=package, release=release
44+
status="pending",
45+
cve=cve,
46+
package=package,
47+
release=release,
4548
)
4649

4750
notice = Notice(

tests/fixtures/payloads.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"description": "",
1111
"release_codename": "testrelease",
1212
"status": "released",
13+
"pocket": "fips",
1314
}
1415
],
1516
"ubuntu": (

webapp/models.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,17 @@ class Status(db.Model):
252252
Enum("main", "universe", name="components"),
253253
)
254254
pocket = Column(
255-
Enum("security", "updates", "esm-infra", "esm-apps", name="pockets"),
255+
Enum(
256+
"security",
257+
"updates",
258+
"esm-infra",
259+
"esm-apps",
260+
"fips",
261+
"fips-updates",
262+
"ros-esm",
263+
"soss",
264+
name="pockets",
265+
),
256266
)
257267

258268
cve = relationship("CVE", back_populates="statuses")

webapp/schemas.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
"esm-infra",
2525
"esm-apps",
2626
"soss",
27+
"fips",
28+
"fips-updates",
29+
"ros-esm",
2730
]
2831

2932
PACKAGE_TYPE_OPTIONS = [

0 commit comments

Comments
 (0)