Extension Callout policy deployment error troubleshooting

You're viewing Apigee Edge documentation.
Go to the Apigee X documentation.
info

InvalidConnectorInstance

Error Message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

Error Saving Revision revision_number
In policy_name: Connector must not be empty.

Example Error Message

Error Saving Revision 1
In Extension Callout-1: Connector must not be empty.

Example Error Screenshot

Invalid Connector Instance error message

Cause

This error occurs if the <Connector> element in the ExtensionCallout policy is missing or set to an empty value.

Diagnosis

  1. Identify the ExtensionCallout policy name in the error message. For example, in the following error, the ExtensionCallout policy name is Extension Callout-1:

    Error Saving Revision 1
    In Extension Callout-1: Connector must not be empty
  2. Examine the failed ExtensionCallout policy XML and verify if <Connector> element is present and non empty. For example, in the policy below <Connector> element is empty and doesn’t contain the name of the extension:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
        <DisplayName>Extension Callout-1</DisplayName>
        <Connector></Connector>
        <Action>downloadFile</Action>
        <Input><![CDATA[
             {}
         ]]></Input>
        <Output>context-variable-name</Output>
    </ConnectorCallout>

Since the <Connector> element is empty, the deployment of the API Proxy fails.

Resolution

Ensure that the value for the <Connector> element of the Extension Callout policy is always specified and matches the name of the actual extension created in the organization.

To correct the example ExtensionCallout policy shown above, you could set the <Connector> element to the name of the extension that exists in the specific environment where the API Proxy is being deployed.

To determine the name of the extension, in the Edge UI you can navigate to Admin > Extensions. The names of all extensions in your organization will be shown there. The extension name should be set in the <Connector> element.

View the name of all extensions in the Edge UI.

Below is the example with the Extension Name set properly in the <Connector> element:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

ConnectorInstanceDoesNotExists

Error Message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

Error Deploying Revision revision_number to environment
In policy_name: Connector <extension_name> does not exist in environment environment.

Example Error Message

Error Deploying Revision 1 to test
In Extension Callout-1: Connector cloud_storage does not exist in environment test.

Example Error Screenshot

Connector Instance Does Not exist error message

Cause

This error occurs if the <Connector> element in the ExtensionCallout policy is set to a name which does not exist in environment where the API proxy is being deployed.

Diagnosis

  1. Identify the ExtensionCallout policy name, the invalid Extension name used in the <Connector> element of the ExtensionCallout policy, and the environment where the error occurred. You can find all these items in the error message.

    For example, in the following error, the ExtensionCallout policy name is Extension Callout-1,invalid name of the Extension is cloud_storage and the environment name is test:

        Error Deploying Revision 1 to test
        In Extension Callout-1: Connector cloud_storage does not exist in environment test.
  2. Examine the failed ExtensionCallout policy XML and verify if the extension name specified for the <Connector> element matches with what’s in the error message.

    In this example, the extension name specified in the <Connector> element is cloud_storage:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
            <DisplayName>Extension Callout-1</DisplayName>
            <Connector>cloud_storage</Connector>
            <Action>downloadFile</Action>
            <Input><![CDATA[
                 {}
             ]]></Input>
            <Output>context-variable-name</Output>
        </ConnectorCallout>
  3. Verify if the extension name has been created in the environment (determined in step #1).

    In the Edge UI, navigate to Admin > Extensions and check if the extension exists and the name matches with the one specified in <Connector> element in the ExtensionCallout policy.

    Notice in the screenshot below that the extension cloud_storage_ext exists, but it doesn’t match the <Connector> element specified in the example ExtensionCallout policy shown above:

    View the name of all extensions in the Edge UI.

    Since in extension name specified in the <Connector> element doesn’t exist, you get the deployment error:

    In Extension Callout-1: Connector cloud_storage does not exist in environment test.

Resolution

Ensure that the extension specified in the <Connector> element of ExtensionCallout policy has been created and name is specified correctly.

Refer to Tutorial: Using extensions for information on how to create the extension.

To fix example above, fix the name so it matches the actual extension:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

InvalidAction

Error Message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

Error Saving Revision revision_number
In policy_name: Action must not be empty.

Example Error Message

Error Saving Revision 1
In Extension Callout-1: Action must not be empty.

Example Error Screenshot

Invalid Action error message

Cause

This error occurs if the <Action> element in the ExtensionCallout policy is missing or set to an empty value.

Diagnosis

  1. Identify the ExtensionCallout policy name. You can find this information in the error message. For example, in the following error, the ExtensionCallout policy name is Extension Callout-1:

        Error Saving Revision 1
        In Extension Callout-1: Action must not be empty.
  2. Examine the failed ExtensionCallout policy XML and verify if action is specified in the <Action> element. If the <Action> element is missing or if it’s empty then that’s the cause of the error.

    In this example, the <Action> element is empty:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
            <DisplayName>Extension Callout-1</DisplayName>
            <Connector>cloud_storage_ext</Connector>
            <Action></Action>
            <Input><![CDATA[
                 {}
             ]]></Input>
            <Output>context-variable-name</Output>
        </ConnectorCallout>

Resolution

Ensure that the <Action> element is always specified and non-empty in ExtensionCallout policy.

Refer to Tutorial: Using extensions for information on how to create an extension and how to use it in the policy with correct <Action> element.

To fix the issue above, specify the correct action for the extension:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

AllowExtensionsInPostClientFlow

Error Message

Deployment of the API proxy through either the Edge UI or the Edge management API fails with this error message:

Error Deploying Revision revision_number to environment
In policy_name: Policy is not allowed in PostClientFlow.

Example Error Message

Error Deploying Revision 1 to test
In Extension Callout-1: Policy is not allowed in PostClientFlow.

Example Error Screenshot

Allow Extensions In Post Client Flow error message

Cause

It is prohibited to have an ExtensionCallout policy in a PostClient Flow. If an ExtensionCallout policy is placed in a PostClient Flow, then the deployment of the API proxy fails with this error.

Diagnosis

  1. Identify the ExtensionCallout policy name. You can find this information in the error message. For example, in the following error, the ExtensionCallout policy name is Extension Callout-1:

    In Extension Callout-1: Policy is not allowed in PostClientFlow.
  2. Examine all the PostClient Flows in all the endpoints of the specific API Proxy where the failure has occurred. Please refer to Controlling how a proxy executes with flows article.

    If you notice that the ExtensionCallout policy (determined in step #1) is placed in the PostClient Flow, then that’s the cause of the error.

    For example, the following PostClient Flow has ExtensionCallout Policy in it:

        ...
        <PostClientFlow>
                <Request/>
                <Response>
                    <Step>
                        <Name>Extension-Callout-1</Name>
                    </Step>
                </Response>
            </PostClientFlow>
        ...

Resolution

Ensure that the ExtensionCallout policy is not placed in the PostClient Flow.

To fix the issue mentioned above, you should move ExtensionCallout policy to any other Flow.

...
<PreFlow name="PreFlow">
    <Request/>
    <Response>
        <Step>
            <Name>Extension-Callout-1</Name>
        </Step>
    </Response>
</PreFlow>
...