cancel
Showing results for 
Search instead for 
Did you mean: 

Problem creating integration from the config

Problem creating integration from the config

I have opened an issue in the stack exchange, reference: Issue 117979

 

I have been having trouble completing tutorial on creating integration from the config.

I believe I followed all the steps correctly. Please help me find the reason why the integration won't appear as expected.

 

Project structure

 

Placed in vendor directory of Magento root directory.

 

    somevendor
    └── module-somemodule
        ├── Setup
        │   └── InstallData.php
        ├── composer.json
        ├── etc
        │   ├── integration
        │   │   ├── api.xml
        │   │   └── config.xml
        │   └── module.xml
        └── registration.php

 

I decided to name my example vendor as `Somevendor` and module as `Somemodule` just for testing purposes.

 

composer.json

 

    {
	     "name": "Somevendor_Somemodule",
	     "description": "create integration from config",
	     "require": {
		    	"php": "~5.5.0|~5.6.0|~7.0.0",
    			"magento/framework": "2.0.0",
	    		"magento/module-integration": "2.0.0"
    	 },
    	 "type": "magento2-module",
    	 "version": "1.0",
    	 "autoload": {
    			"files": [ "registration.php" ],
    			"psr-4": {
    				 "Somevendor\\Somemodule\\": ""
    			}
    	 }
    }

 

registration.php

 

    <?php
    	\Magento\Framework\Component\ComponentRegistrar::register(
    	\Magento\Framework\Component\ComponentRegistrar::MODULE,
    	'Somevendor_Somemodule',
    	__DIR__
    	);

 

etc/module.xml

 

    <?xml version="1.0"?>
    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
        <module name="Somevendor_Somemodule" setup_version="2.0.0">
            <sequence>
                <module name="Magento_Integration"/>
            </sequence>
        </module>
    </config>

 

etc/integration/api.xml

 

    <integrations>
        <integration name="testIntegration">
            <resources>
                <!-- To grant permission to Magento_Log::online, its parent Magento_Customer::customer needs to be declared as well-->
                <resource name="Magento_Customer::customer" />
                <resource name="Magento_Log::online" />
                <!-- To grant permission to Magento_Sales::reorder, all its parent resources need to be declared-->
                <resource name="Magento_Sales::sales" />
                <resource name="Magento_Sales::sales_operation" />
                <resource name="Magento_Sales::sales_order" />
                <resource name="Magento_Sales::actions" />
                <resource name="Magento_Sales::reorder" />
            </resources>
        </integration>
    </integrations>

 

etc/integration/config.xml

 

    <integrations>
       <integration name="TestIntegration">
           <email>someone@example.com</email>
           <endpoint_url>http://example.com</endpoint_url>
           <identity_link_url>http://example.com/identity</identity_link_url>
       </integration>
    </integrations>

 

Setup/InstallData.php

 

    <?php
    namespace Somevendor\Somemodule\Setup;
    
    use Magento\Framework\Setup\ModuleContextInterface;
    use Magento\Framework\Setup\ModuleDataSetupInterface;
    use Magento\Integration\Model\ConfigBasedIntegrationManager;
    use Magento\Framework\Setup\InstallDataInterface;
    
    class InstallData implements InstallDataInterface
    {
    		/**
    		 * @var ConfigBasedIntegrationManager
    		 */
    
    
    		private $integrationManager;
    
    		/**
    		 * @param ConfigBasedIntegrationManager $integrationManager
    		 */
    
    		public function __construct(ConfigBasedIntegrationManager $integrationManager)
    		{
    				$this->integrationManager = $integrationManager;
    		}
    
    		/**
    		 * {@inheritdoc}
    		 */
    
    		public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    		{
    				$this->integrationManager->processIntegrationConfig(['testIntegration']);
    		}
    }

 

Local setup

 

I couldn't put entire config as post length is limited to 30000 characters but I will put specific information if requested.

 

    PHP Version => 5.5.30
    
    System => Darwin rutherfordium.local 15.2.0 Darwin Kernel Version 15.2.0: Fri Nov 13 19:56:56 PST 2015; root:xnu-3248.20.55~2/RELEASE_X86_64 x86_64
    Build Date => Dec  4 2015 19:25:34
    Configure Command =>  './configure'  '--prefix=/Applications/XAMPP/xamppfiles' '--with-apxs2=/Applications/XAMPP/xamppfiles/bin/apxs' '--with-config-file-path=/Applications/XAMPP/xamppfiles/etc' '--with-mysql=mysqlnd' '--enable-inline-optimization' '--disable-debug' '--enable-bcmath' '--enable-calendar' '--enable-ctype' '--enable-ftp' '--enable-gd-native-ttf' '--enable-magic-quotes' '--enable-shmop' '--disable-sigchild' '--enable-sysvsem' '--enable-sysvshm' '--enable-wddx' '--with-gdbm=/Applications/XAMPP/xamppfiles' '--with-jpeg-dir=/Applications/XAMPP/xamppfiles' '--with-png-dir=/Applications/XAMPP/xamppfiles' '--with-freetype-dir=/Applications/XAMPP/xamppfiles' '--with-zlib=yes' '--with-zlib-dir=/Applications/XAMPP/xamppfiles' '--with-openssl=/Applications/XAMPP/xamppfiles' '--with-xsl=/Applications/XAMPP/xamppfiles' '--with-ldap=/Applications/XAMPP/xamppfiles' '--with-gd' '--with-imap=/bitnami/xamppunixinstallerstack-osx-x64/src/imap-2007e' '--with-imap-ssl' '--with-gettext=/Applications/XAMPP/xamppfiles' '--with-mssql=shared,/Applications/XAMPP/xamppfiles' '--with-pdo-dblib=shared,/Applications/XAMPP/xamppfiles' '--with-sybase-ct=/Applications/XAMPP/xamppfiles' '--with-mysql-sock=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' '--with-oci8=shared,instantclient,/Applications/XAMPP/xamppfiles/lib/instantclient' '--with-mcrypt=/Applications/XAMPP/xamppfiles' '--with-mhash=/Applications/XAMPP/xamppfiles' '--enable-sockets' '--enable-mbstring=all' '--with-curl=/Applications/XAMPP/xamppfiles' '--enable-mbregex' '--enable-zend-multibyte' '--enable-exif' '--with-bz2=/Applications/XAMPP/xamppfiles' '--with-sqlite=shared,/Applications/XAMPP/xamppfiles' '--with-sqlite3=/Applications/XAMPP/xamppfiles' '--with-libxml-dir=/Applications/XAMPP/xamppfiles' '--enable-soap' '--with-xmlrpc' '--enable-pcntl' '--with-mysqli=mysqlnd' '--with-pgsql=shared,/Applications/XAMPP/xamppfiles/' '--with-iconv=/Applications/XAMPP/xamppfiles' '--with-pdo-mysql=mysqlnd' '--with-pdo-pgsql=/Applications/XAMPP/xamppfiles/postgresql' '--with-pdo-sqlite' '--with-icu-dir=/Applications/XAMPP/xamppfiles' '--enable-fileinfo' '--enable-phar' '--enable-zip'
    Server API => Command Line Interface
    Virtual Directory Support => disabled
    Configuration File (php.ini) Path => /Applications/XAMPP/xamppfiles/etc
    Loaded Configuration File => /Applications/XAMPP/xamppfiles/etc/php.ini
    Scan this dir for additional .ini files => (none)
    Additional .ini files parsed => (none)
    PHP API => 20121113
    PHP Extension => 20121212
    Zend Extension => 220121212
    Zend Extension Build => API220121212,NTS
    PHP Extension Build => API20121212,NTS
    Debug Build => no
    Thread Safety => disabled
    Zend Signal Handling => disabled
    Zend Memory Manager => enabled
    Zend Multibyte Support => provided by mbstring
    IPv6 Support => enabled
    DTrace Support => disabled
    
    Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip
    Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
    Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, mcrypt.*, mdecrypt.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk
    
    This program makes use of the Zend Scripting Language Engine:
    Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
    
    
     _______________________________________________________________________
    
    
    Configuration
    
    bcmath
    
    BCMath support => enabled
    
    Directive => Local Value => Master Value
    bcmath.scale => 0 => 0
    
    bz2
    
    BZip2 Support => Enabled
    Stream Wrapper support => compress.bzip2://
    Stream Filter support => bzip2.decompress, bzip2.compress
    BZip2 Version => 1.0.6, 6-Sept-2010
    
    calendar
    
    Calendar support => enabled
    
    Core
    
    PHP Version => 5.5.30
    
    Directive => Local Value => Master Value
    allow_url_fopen => On => On
    allow_url_include => Off => Off
    always_populate_raw_post_data => Off => Off
    arg_separator.input => & => &
    arg_separator.output => & => &
    asp_tags => Off => Off
    auto_append_file => no value => no value
    auto_globals_jit => On => On
    auto_prepend_file => no value => no value
    browscap => no value => no value
    default_charset => no value => no value
    default_mimetype => text/html => text/html
    disable_classes => no value => no value
    disable_functions => no value => no value
    display_errors => STDOUT => STDOUT
    display_startup_errors => On => On
    doc_root => no value => no value
    docref_ext => no value => no value
    docref_root => no value => no value
    enable_dl => Off => Off
    enable_post_data_reading => On => On
    error_append_string => no value => no value
    ...

 

Magento version

 

2.0.4

 

Building

 

Clean-up the build

 

rm -rf var/di

 

Or

 

rm -rf var/cache/* var/di/* var/generation/* var/page_cache/* 

 

Launch the upgrade

 

/Applications/XAMPP/bin/php bin/magento setup:upgrade 

 

Build

 

/Applications/XAMPP/bin/php bin/magento setup:di:compile  

 

Note that I am using /Applications/XAMPP/bin/php instead of simply php because I want to be sure this is same runtime as locally running server.

I completed several other examples, for custom API endpoint and observers, those worked fine with same approach and debug logging, only integration causes trouble.

 

Obtained results

 

Integration does not appear in the admin panel as tutorial suggests it should.

 

Attempts to explain

 

I failed to put logger in the InstallData.php script as I tried to determine if it is being launched or not. The reason why it didn't work is actually a subject for opening a separate issue.

Maybe someone could advise if there is a better way to test that, it would be a good start.