Skip to content

Commit

Permalink
add user credentials, user credentials group,
Browse files Browse the repository at this point in the history
variable, and secret tables to migration
  • Loading branch information
arash77 committed Feb 11, 2025
1 parent 165d4e1 commit 4035a92
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
"""add user credentials table
Revision ID: b112afff85da
Revises: a4c3ef999ab5
Create Date: 2025-02-11 11:08:33.635329
"""

from sqlalchemy import (
Boolean,
Column,
DateTime,
ForeignKey,
Integer,
)

from galaxy.model.custom_types import TrimmedString
from galaxy.model.database_object_names import build_foreign_key_name
from galaxy.model.migrations.util import (
add_column,
create_foreign_key,
create_table,
create_unique_constraint,
drop_constraint,
drop_table,
transaction,
)

# revision identifiers, used by Alembic.
revision = "b112afff85da"
down_revision = "a4c3ef999ab5"
branch_labels = None
depends_on = None

user_credentials_table = "user_credentials"
credentials_group_table = "credentials_group"
credential_table = "credential"
current_group_id_column_name = "current_group_id"
current_group_id_fk_name = build_foreign_key_name(user_credentials_table, current_group_id_column_name)
user_credentials_unique_constraint_name = "uq_user_credentials"


def upgrade():
with transaction():
create_table(
user_credentials_table,
Column("id", Integer, primary_key=True),
Column("user_id", Integer, ForeignKey("galaxy_user.id"), index=True),
Column("source_type", TrimmedString(255)),
Column("source_id", TrimmedString(255)),
Column("source_version", TrimmedString(255)),
Column("name", TrimmedString(255)),
Column("version", TrimmedString(255)),
Column("create_time", DateTime),
Column("update_time", DateTime),
)
create_unique_constraint(
user_credentials_unique_constraint_name,
user_credentials_table,
["user_id", "source_type", "source_id", "source_version", "name", "version"],
)
create_table(
credentials_group_table,
Column("id", Integer, primary_key=True),
Column(
"user_credentials_id",
Integer,
ForeignKey(f"{user_credentials_table}.id", ondelete="CASCADE"),
index=True,
),
Column("name", TrimmedString(255)),
Column("create_time", DateTime),
Column("update_time", DateTime),
)
add_column(user_credentials_table, Column(current_group_id_column_name, Integer, index=True, nullable=True))
create_foreign_key(
current_group_id_fk_name,
user_credentials_table,
credentials_group_table,
[current_group_id_column_name],
["id"],
ondelete="CASCADE",
)
create_table(
credential_table,
Column("id", Integer, primary_key=True),
Column("group_id", Integer, ForeignKey(f"{credentials_group_table}.id", ondelete="CASCADE"), index=True),
Column("name", TrimmedString(255)),
Column("is_secret", Boolean),
Column("is_set", Boolean),
Column("value", TrimmedString(255), nullable=True),
Column("create_time", DateTime),
Column("update_time", DateTime),
)


def downgrade():
with transaction():
drop_constraint(current_group_id_fk_name, user_credentials_table)

drop_table(credential_table)
drop_table(credentials_group_table)
drop_table(user_credentials_table)
27 changes: 27 additions & 0 deletions tools/chatgpt/chatgpt.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<tool id="secret_tool" name="secret_tool" version="test" profile="23.0">
<requirements>
<credentials name="serviceA" service_reference="5111" optional="false" multiple="false" label="Credentials for Service A" description="Optional description of the service using credentials">
<variable name="server" inject_as_env="serviceA_url" label="Your Service1 server" description="You can set the server..."/>
<secret name="username" inject_as_env="serviceA_user" label="Your Service1 username" description="Your username is your email"/>
<secret name="password" inject_as_env="serviceA_pass" label="Your Service1 password" description="This needs to be a strong password"/>
</credentials>
<credentials name="serviceB" service_reference="5222" optional="true" multiple="true" label="Another service" description="Optional description of the service using credentials">
<secret name="api_token" inject_as_env="serviceB_token" label="API Token" description="This is the API token for service B"/>
</credentials>
</requirements>
<command><![CDATA[
echo \$serviceA_url \$serviceA_user \$serviceA_pass \$serviceB_token > '$output'
]]></command>
<outputs>
<data name="output" format="txt"/>
</outputs>
<tests>
<test>
<output name="output">
<assert_contents>
<has_n_lines n="1"/>
</assert_contents>
</output>
</test>
</tests>
</tool>

0 comments on commit 4035a92

Please sign in to comment.