I recently downloaded deploy 7.x-2.x-dev to give it a try. I have been following the instructions here http://drupal.org/node/1406134 and here http://drupal.org/node/1406136. When I attempt to deploy a plan, its status updates to "published", but the nodes do not appear on the destination server. I started up my debugger and followed it through deploy's code to see what might be happening. Here is is what surprised me:

DeployServiceRestJSON.inc

  public function deploy(Traversable $iterator) {
    foreach ($iterator as $entity) {
      $json_data = drupal_json_encode($entity);
      $this->config['headers']['Content-Type'] = 'application/json';

      // TODO: Consider making the resource path configurable.
      $url = $this->config['url'] . '/' . $entity->__metadata['uri'] . '.json';
      $this->httpRequest($url, 'PUT', $json_data);
    }
  }

The code inside this foreach never gets executed. However, it seems like it should be working.

DeployAggregator.inc

  public function getIterator() {
    $entities = $this->getEntities();
    return deploy_iterator($entities);
  }

When the snippet above gets executed, $entities contains the 2 nodes I added to my plan. So, there are two entities to iterate over right? Nonetheless, the foreach behaves as if there were none. I have no familiarity with custom iterators, so I've come here for advice. Is this a potential bug, or have I misconfigured something somewhere?

When stepping through the code, I was executing the plan in the deploy_example module. I only changed the endpoint url to point to my destination server.

Comments

xadag’s picture

I had the same problem, i solve it by downloaded the latest dev release of entity dependency.

Cyberwolf’s picture

Latest dev version of entity_dependency fixed this issue here as well.

sylus’s picture

Status: Active » Closed (fixed)

Can confirm this is fixed as well.

netw3rker’s picture

the key to getting this running for me was the following:
ensure that the following modules have been downloaded to both environments (source and destination):

deploy-7.x-2.x-dev
services-7.x-3.x-dev
entity_dependency-7.x-1.x-dev
uuid-7.x-1.x-dev

after this, things still didn't work. It required 2 things to happen:

1) rebuild the deployment plan on the source server
2) edit the service endpoint and resave it on the destination server

I also managed to botch things up a bit by generating uuid values independently on each environment. This manifested itself as the following error:

DeployServiceException: Service error: 404 Not found: Could not find the controller. in DeployServiceRest->httpRequest() (line 74 of /var/www/examaple.com/sites/all/modules/contrib/deploy/includes/DeployServiceRest.inc).

since the watchdog message doesn't contain the url of the service requested, its all but impossible to diagnose this. I added (at line 74) a debug message that shows the url and traced mine down to a url that looked like this:

http://example.com/inbound/user/df655d48-437d-461b-a554-7083b0360141.json

which when i went to it, returned a 404. After syncing the UUID entries for users between environments, and ensuring that the service endpoint had been properly resaved (item 2 above) the server responded properly with the right data. Nodes began to save after this on the destination server as well.

Hope this helps someone! I'm going to add this comment into thread https://drupal.org/node/679604 (troubleshooting deploy problems) too.

good luck!

caspervoogt’s picture

netw3rker, could you please explain 'After syncing the UUID entries for users between environments' ? How exactly does one do that?