[ 
https://issues.apache.org/jira/browse/AIRAVATA-3296?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17079963#comment-17079963
 ] 

Marcus Christie edited comment on AIRAVATA-3296 at 4/15/20, 12:19 AM:
----------------------------------------------------------------------

SQL script for creating missing entries:

{code:sql}
-- create table to store GRP tokens that don't have sharing_catalog ENTITY 
records
CREATE TABLE sharing_catalog.TEMP_TOKENS
SELECT
    DISTINCT RESOURCE_CS_TOKEN AS TOKEN
FROM
    app_catalog.GROUP_COMPUTE_RESOURCE_PREFERENCE
WHERE
    RESOURCE_CS_TOKEN IS NOT NULL
    AND RESOURCE_CS_TOKEN != ''
    AND RESOURCE_CS_TOKEN NOT IN (
        SELECT
            ENTITY_ID
        FROM
            sharing_catalog.ENTITY
    )
    AND EXISTS (
        SELECT
            1
        FROM
            credential_store.CREDENTIALS
        WHERE
            TOKEN_ID = RESOURCE_CS_TOKEN
    )
UNION
DISTINCT
SELECT
    DISTINCT DEFAULT_CREDENTIAL_STORE_TOKEN AS TOKEN
FROM
    app_catalog.GROUP_RESOURCE_PROFILE
WHERE
    DEFAULT_CREDENTIAL_STORE_TOKEN IS NOT NULL
    AND DEFAULT_CREDENTIAL_STORE_TOKEN != ''
    AND DEFAULT_CREDENTIAL_STORE_TOKEN NOT IN (
        SELECT
            ENTITY_ID
        FROM
            sharing_catalog.ENTITY
    )
    AND EXISTS (
        SELECT
            1
        FROM
            credential_store.CREDENTIALS
        WHERE
            TOKEN_ID = DEFAULT_CREDENTIAL_STORE_TOKEN
    );

-- Create ENTITY records
INSERT INTO
    sharing_catalog.ENTITY (
        ENTITY_ID,
        DOMAIN_ID,
        ENTITY_TYPE_ID,
        OWNER_ID,
        NAME,
        DESCRIPTION,
        ORIGINAL_ENTITY_CREATION_TIME,
        CREATED_TIME,
        UPDATED_TIME
    )
SELECT
    TOKEN_ID,
    GATEWAY_ID,
    concat(GATEWAY_ID, ':CREDENTIAL_TOKEN') AS ENTITY_TYPE_ID,
    concat(PORTAL_USER_ID, '@', GATEWAY_ID) AS OWNER_ID,
    TOKEN_ID,
    DESCRIPTION,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS ORIGINAL_ENTITY_CREATION_TIME,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS CREATED_TIME,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS UPDATED_TIME
FROM
    credential_store.CREDENTIALS
WHERE
    TOKEN_ID IN (
        SELECT
            TOKEN
        FROM
            sharing_catalog.TEMP_TOKENS
    );

-- Create SHARING records: 1) OWNER permission, 2) For Admins group, READ and
-- WRITE permission, and 3) for Read Only Admins group, READ permission
INSERT INTO
    sharing_catalog.SHARING (
        PERMISSION_TYPE_ID,
        ENTITY_ID,
        DOMAIN_ID,
        GROUP_ID,
        SHARING_TYPE,
        INHERITED_PARENT_ID,
        CREATED_TIME,
        UPDATED_TIME
    )
SELECT
    concat(GATEWAY_ID, ':OWNER'),
    TOKEN_ID,
    GATEWAY_ID,
    concat(PORTAL_USER_ID, '@', GATEWAY_ID) AS GROUP_ID,
    'DIRECT_CASCADING',
    TOKEN_ID,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS CREATED_TIME,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS UPDATED_TIME
FROM
    credential_store.CREDENTIALS
WHERE
    TOKEN_ID IN (
        SELECT
            TOKEN
        FROM
            sharing_catalog.TEMP_TOKENS
    )
UNION
ALL
SELECT
    concat(c.GATEWAY_ID, ':READ'),
    c.TOKEN_ID,
    c.GATEWAY_ID,
    g.ADMINS_GROUP_ID AS GROUP_ID,
    'DIRECT_NON_CASCADING',
    c.TOKEN_ID,
    UNIX_TIMESTAMP(c.TIME_PERSISTED) * 1000 AS CREATED_TIME,
    UNIX_TIMESTAMP(c.TIME_PERSISTED) * 1000 AS UPDATED_TIME
FROM
    credential_store.CREDENTIALS c
    INNER JOIN app_catalog.GATEWAY_GROUPS g ON g.GATEWAY_ID = c.GATEWAY_ID
WHERE
    TOKEN_ID IN (
        SELECT
            TOKEN
        FROM
            sharing_catalog.TEMP_TOKENS
    )
UNION
ALL
SELECT
    concat(c.GATEWAY_ID, ':WRITE'),
    c.TOKEN_ID,
    c.GATEWAY_ID,
    g.ADMINS_GROUP_ID AS GROUP_ID,
    'DIRECT_NON_CASCADING',
    c.TOKEN_ID,
    UNIX_TIMESTAMP(c.TIME_PERSISTED) * 1000 AS CREATED_TIME,
    UNIX_TIMESTAMP(c.TIME_PERSISTED) * 1000 AS UPDATED_TIME
FROM
    credential_store.CREDENTIALS c
    INNER JOIN app_catalog.GATEWAY_GROUPS g ON g.GATEWAY_ID = c.GATEWAY_ID
WHERE
    TOKEN_ID IN (
        SELECT
            TOKEN
        FROM
            sharing_catalog.TEMP_TOKENS
    )
UNION
ALL
SELECT
    concat(c.GATEWAY_ID, ':READ'),
    c.TOKEN_ID,
    c.GATEWAY_ID,
    g.READ_ONLY_ADMINS_GROUP_ID AS GROUP_ID,
    'DIRECT_NON_CASCADING',
    c.TOKEN_ID,
    UNIX_TIMESTAMP(c.TIME_PERSISTED) * 1000 AS CREATED_TIME,
    UNIX_TIMESTAMP(c.TIME_PERSISTED) * 1000 AS UPDATED_TIME
FROM
    credential_store.CREDENTIALS c
    INNER JOIN app_catalog.GATEWAY_GROUPS g ON g.GATEWAY_ID = c.GATEWAY_ID
WHERE
    TOKEN_ID IN (
        SELECT
            TOKEN
        FROM
            sharing_catalog.TEMP_TOKENS
    );

DROP TABLE sharing_catalog.TEMP_TOKENS;
{code}


was (Author: marcuschristie):
Work in progress scripts for creating missing entries:

{code:sql}
SELECT
    DISTINCT RESOURCE_CS_TOKEN
FROM
    app_catalog.GROUP_COMPUTE_RESOURCE_PREFERENCE
WHERE
    RESOURCE_CS_TOKEN IS NOT NULL
    AND RESOURCE_CS_TOKEN != ''
    AND RESOURCE_CS_TOKEN NOT IN (
        SELECT
            ENTITY_ID
        FROM
            sharing_catalog.ENTITY
    )
    AND EXISTS (
        SELECT
            1
        FROM
            credential_store.CREDENTIALS
        WHERE
            TOKEN_ID = RESOURCE_CS_TOKEN
    );

SELECT
    DISTINCT DEFAULT_CREDENTIAL_STORE_TOKEN
FROM
    app_catalog.GROUP_RESOURCE_PROFILE
WHERE
    DEFAULT_CREDENTIAL_STORE_TOKEN IS NOT NULL
    AND DEFAULT_CREDENTIAL_STORE_TOKEN != ''
    AND DEFAULT_CREDENTIAL_STORE_TOKEN NOT IN (
        SELECT
            ENTITY_ID
        FROM
            sharing_catalog.ENTITY
    )
    AND EXISTS (
        SELECT
            1
        FROM
            credential_store.CREDENTIALS
        WHERE
            TOKEN_ID = DEFAULT_CREDENTIAL_STORE_TOKEN
    );

INSERT INTO
    sharing_catalog.ENTITY (
        ENTITY_ID,
        DOMAIN_ID,
        ENTITY_TYPE_ID,
        OWNER_ID,
        NAME,
        DESCRIPTION,
        ORIGINAL_ENTITY_CREATION_TIME,
        CREATED_TIME,
        UPDATED_TIME
    )
SELECT
    TOKEN_ID,
    GATEWAY_ID,
    concat(GATEWAY_ID, ':CREDENTIAL_TOKEN') AS ENTITY_TYPE_ID,
    concat(PORTAL_USER_ID, '@', GATEWAY_ID) AS OWNER_ID,
    TOKEN_ID,
    DESCRIPTION,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS ORIGINAL_ENTITY_CREATION_TIME,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS CREATED_TIME,
    UNIX_TIMESTAMP(TIME_PERSISTED) * 1000 AS UPDATED_TIME
FROM
    credential_store.CREDENTIALS
WHERE
    TOKEN_ID IN (
        SELECT
            DISTINCT RESOURCE_CS_TOKEN
        FROM
            app_catalog.GROUP_COMPUTE_RESOURCE_PREFERENCE
        WHERE
            RESOURCE_CS_TOKEN IS NOT NULL
            AND RESOURCE_CS_TOKEN != ''
            AND RESOURCE_CS_TOKEN NOT IN (
                SELECT
                    ENTITY_ID
                FROM
                    sharing_catalog.ENTITY
            )
            AND EXISTS (
                SELECT
                    1
                FROM
                    credential_store.CREDENTIALS
                WHERE
                    TOKEN_ID = RESOURCE_CS_TOKEN
            )
        UNION
        DISTINCT
        SELECT
            DISTINCT DEFAULT_CREDENTIAL_STORE_TOKEN
        FROM
            app_catalog.GROUP_RESOURCE_PROFILE
        WHERE
            DEFAULT_CREDENTIAL_STORE_TOKEN IS NOT NULL
            AND DEFAULT_CREDENTIAL_STORE_TOKEN != ''
            AND DEFAULT_CREDENTIAL_STORE_TOKEN NOT IN (
                SELECT
                    ENTITY_ID
                FROM
                    sharing_catalog.ENTITY
            )
            AND EXISTS (
                SELECT
                    1
                FROM
                    credential_store.CREDENTIALS
                WHERE
                    TOKEN_ID = DEFAULT_CREDENTIAL_STORE_TOKEN
            )
    );
{code}

> Missing sharing_catalog records for credential
> ----------------------------------------------
>
>                 Key: AIRAVATA-3296
>                 URL: https://issues.apache.org/jira/browse/AIRAVATA-3296
>             Project: Airavata
>          Issue Type: Bug
>            Reporter: Marcus Christie
>            Assignee: Marcus Christie
>            Priority: Major
>
> SEAGrid credentials in Default group resource profile are missing 
> sharing_catalog records. Perhaps because the owning user is not in the 
> sharing catalog.
> h5. TODO
> - [x] Check if there are any other instances of this problem and fix those up 
> too
> - [ ] create query to find other instances and write them to temporary table
> - [ ] create query to create ENTITY records
> - [ ] create query to create SHARING records for OWNER
> - [ ] create query to create SHARING records for Admins and Read Only Admins 
> groups



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to