Summary
Stages a service definition. A staged service definition file (.sd) contains all the necessary information to share a web layer, web tool, or service.
Usage
This tool converts a service definition draft file (.sddraft) into a service definition that can then be input to the Upload Service Definition tool to upload and publish a web layer, web tool, or service to ArcGIS Online, ArcGIS Enterprise, or ArcGIS Server. Draft service definitions cannot be used to publish a web layer, web tool, or service directly.
Whenever you share a web layer, web tool, or service using ArcGIS Pro, the Stage Service tool is run, and an entry appears in the Geoprocessing History item in the Catalog pane.
This tool will analyze .sddraft files to determine suitability and sources of potential performance issues before converting a service definition draft file to a service definition (.sd) file. When the tool is running, you can hover over the progress bar to display a pop-up window containing comprehensive information about the tool, including analyzer messages. You can also click View Details to see the same detailed information in a detached window, or click Open History to open the project's geoprocessing history. When the tool is finished running, the progress bar will display an icon and message to indicate the tool status. For more information about viewing messages in geoprocessing tools, see running a geoprocessing tool.
When analyzing an .sddraft file, you may see two types of messages: errors and warnings. Analyzer errors must be addressed before you can create a service definition file. Analyzer warnings identify issues related to performance, appearance, and data access but do not prevent you from converting the service definition draft file to a service definition file. Each analyzer message has an associated help topic. For more information about resolving these issues, see Analyze your GIS resource.
Service definition drafts can be created using the arcpy.sharing module or the CreateGeocodeSDDraft, CreateGPSDDraft, or CreateImageSDDraft ArcPy functions.
Syntax
arcpy.server.StageService(in_service_definition_draft, out_service_definition, {staging_version})
Parameter | Explanation | Data Type |
in_service_definition_draft | The input draft service definition. Service definition drafts can be created using the arcpy.sharing module or the CreateGeocodeSDDraft, CreateGPSDDraft, or CreateImageSDDraft ArcPy functions. | File |
out_service_definition | The resulting service definition. The default is to write the service definition to the same directory as the draft service definition. | File |
staging_version (Optional) | The version of the service that the service definition will be published as. When sharing a feature, a tile, or an imagery layer to ArcGIS Enterprise, use 5. When sharing a map image layer or web tool to ArcGIS Enterprise, and any layer type to ArcGIS Online, use 102. This is the default. | Long |
Code sample
The following script publishes a list of layers from a map as a web tile layer to either ArcGIS Enterprise or ArcGIS Online. Portal information is obtained from the Portals page in ArcGIS Pro.
import arcpy
import os
# Set output file names
outdir = r"C:\Project\Output"
service = "TileSharingDraftExample"
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
# Reference map to publish
aprx = arcpy.mp.ArcGISProject(r"C:\Project\World.aprx")
m = aprx.listMaps("World")[0]
lyrs = []
lyrs.append(m.listLayers('cities')[0])
lyrs.append(m.listLayers('counties')[0])
# Create TileSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("HOSTING_SERVER", "TILE", service, lyrs)
sharing_draft.summary = "My Summary"
sharing_draft.tags = "My Tags"
sharing_draft.description = "My Description"
sharing_draft.credits = "My Credits"
sharing_draft.useLimitations = "My Use Limitations"
# Create Service Definition Draft file
sharing_draft.exportToSDDraft(sddraft_output_filename)
# Stage Service
sd_filename = service + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, "My Hosted Services")
print("Successfully Uploaded service.")
The following script stages an existing service definition draft and displays analyzer warnings and errors.
import arcpy
try:
arcpy.StageService_server(r"C:\Data\World.sddraft", r"C:\Data\World.sd")
warnings = arcpy.GetMessages(1)
print(warnings)
except Exception as stage_exception:
print("Sddraft not staged. Analyzer errors encountered - {}".format(str(stage_exception)))
Environments
Licensing information
- Basic: Yes
- Standard: Yes
- Advanced: Yes