jetpack icon indicating copy to clipboard operation
jetpack copied to clipboard

Site Migration: Add site migration endpoint for access to migration key

Open sixhours opened this issue 11 months ago • 3 comments

Related to https://github.com/Automattic/wp-calypso/issues/87393

Proposed changes:

  • Add a /wpcom/v2/sites/${site}/site-migration endpoint to sites with the Migrate Guru plugin, from which we can fetch the migration key on the front end.

I haven't been able to get this to show the new endpoint for a WoA site using the Jetpack Beta plugin, or by copying the file directly to the WoA site, but it seems to work on Simple sites (although those don't have the plugin, so the migration key will be an empty string.)

Other information:

  • [ ] Have you written new tests for your changes, if applicable?
  • [ ] Have you checked the E2E test CI results, and verified that your changes do not break them?
  • [ ] Have you tested your changes on WordPress.com, if applicable (if so, you'll see a generated comment below with a script to run)?

Jetpack product discussion

Does this pull request change what data or activity we track or use?

Testing instructions:

  • Go to '..'

sixhours avatar Mar 05 '24 18:03 sixhours

Are you an Automattician? Please test your changes on all WordPress.com environments to help mitigate accidental explosions.

  • To test on WoA, go to the Plugins menu on a WordPress.com Simple site. Click on the "Upload" button and follow the upgrade flow to be able to upload, install, and activate the Jetpack Beta plugin. Once the plugin is active, go to Jetpack > Jetpack Beta, select your plugin, and enable the add/site-migration-endpoint branch.

    • For jetpack-mu-wpcom changes, also add define( 'JETPACK_MU_WPCOM_LOAD_VIA_BETA_PLUGIN', true ); to your wp-config.php file.
  • To test on Simple, run the following command on your sandbox:

    bin/jetpack-downloader test jetpack add/site-migration-endpoint
    
    bin/jetpack-downloader test jetpack-mu-wpcom-plugin add/site-migration-endpoint
    

Interested in more tips and information?

  • In your local development environment, use the jetpack rsync command to sync your changes to a WoA dev blog.
  • Read more about our development workflow here: PCYsg-eg0-p2
  • Figure out when your changes will be shipped to customers here: PCYsg-eg5-p2

github-actions[bot] avatar Mar 05 '24 18:03 github-actions[bot]

Thank you for your PR!

When contributing to Jetpack, we have a few suggestions that can help us test and review your patch:

  • :white_check_mark: Include a description of your PR changes.
  • :white_check_mark: Add a "[Status]" label (In Progress, Needs Team Review, ...).
  • :white_check_mark: Add testing instructions.
  • :white_check_mark: Specify whether this PR includes any changes to data or privacy.
  • :white_check_mark: Add changelog entries to affected projects

This comment will be updated as you work on your PR and make changes. If you think that some of those checks are not needed for your PR, please explain why you think so. Thanks for cooperation :robot:


The e2e test report can be found here. Please note that it can take a few minutes after the e2e tests checks are complete for the report to be available.


Once your PR is ready for review, check one last time that all required checks appearing at the bottom of this PR are passing or skipped. Then, add the "[Status] Needs Team Review" label and ask someone from your team review the code. Once reviewed, it can then be merged. If you need an extra review from someone familiar with the codebase, you can update the labels from "[Status] Needs Team Review" to "[Status] Needs Review", and in that case Jetpack Approvers will do a final review of your PR.


Jetpack plugin:

The Jetpack plugin has different release cadences depending on the platform:

  • WordPress.com Simple releases happen daily.
  • WoA releases happen weekly.
  • Releases to self-hosted sites happen monthly. The next release is scheduled for April 2, 2024 (scheduled code freeze on April 1, 2024).

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.


Mu Wpcom plugin:

  • Next scheduled release: April 2, 2024.
  • Scheduled code freeze: March 25, 2024.

If you have any questions about the release process, please ask in the #jetpack-releases channel on Slack.

github-actions[bot] avatar Mar 05 '24 18:03 github-actions[bot]

@andres-blanco I'm running into issues testing this and since it's similar to your work in D140803-code I figured I'd ping you. 😅

Is it normal that I wouldn't be able to get the new endpoint from the AT site on the developer console? I noticed you added a test function hooked to init in the above diff.

Then endpoint is working for Simple sites but not WoA when sandboxed on dev pool.

sixhours avatar Mar 06 '24 16:03 sixhours

I've figured out part of the problem in testing this on Atomic - we do some class mapping for API endpoints in jetpack-mu-wpcom on WP.com. But I'm modeling this after the Launchpad endpoints so I'm not sure what I'm missing...

sixhours avatar Mar 06 '24 20:03 sixhours

I've figured out part of the problem in testing this on Atomic - we do some class mapping for API endpoints in jetpack-mu-wpcom on WP.com. But I'm modeling this after the Launchpad endpoints so I'm not sure what I'm missing...

Dales comment is the best approach https://github.com/Automattic/jetpack/pull/36194#issuecomment-1983452747

@sixhours I don't know if there's something automatic happening. If I remember correctly, from Calypso we always hit Launchpad endpoints on Simple, but we sync with AT via a synced option. So, we are not probably going to be able to hit the AT endpoint directly. Going from there, we can do the following in the endpoint function:

  1. Check to see wether we are on AT or not
  2. If we are not, then we should
  3. check to see if the current user has admin capabilities
  4. redirect the request to the AT site by doing something similar to this: fbhepr%2Skers%2Sjcpbz%2Sjc%2Qpbagrag%2Szh%2Qcyhtvaf%2Sjcpbz%2Qynhapucnq.cuc%3Se%3Q4ssopo81%26sv%3Qjcpbz_ynhapucnq_hcqngr_ngbzvp_fvgr_jvgu_yrtnpl_fvgr_frghc_gnfxf%23101-og and return the key
  5. If we are on AT, then we run the code that you added to get the key

Let me know if this makes sense :)

andres-blanco avatar Mar 07 '24 11:03 andres-blanco

I think the endpoint needs to be set up explicitly to forward API calls to the Jetpack site, as per these instructions: PCYsg-liz-p2.

daledupreez avatar Mar 07 '24 12:03 daledupreez

Closing this out in favor of #36253 which adds the endpoint directly to Jetpack.

sixhours avatar Mar 07 '24 16:03 sixhours