You may get into a situation when you have some kind of issue with your Azure Subscription (e.g. you have reached the spending limit, issues with the credit card and etc.) and your account will get suspended/disabled. Right after this issue gets fixed, you notice your PaaS Cloud Services are all empty, without any deployments and the packages are gone. You may also notice your IaaS VMs are stopped but you are able to simply start them again within seconds. So the big questions are, why are my deployment packages gone and how do I get them back to my Cloud Service? See the following points to get the explanation for these questions:
Cloud Services packages are gone:
When Azure Accounts are disabled, by default, all the PaaS Cloud Services deployments packages are also deleted for a few reasons:
- Since PaaS VMs are stateless and it’s not possible to de-allocate them as we do with IaaS VMs, which means that, by shutting them down won’t prevent customer for being billed by compute hours. Deleting the Deployment packages prevent the disabled accounts to have additional compute hours billed.
- Only the package (.cspkg) and the its configuration file (.cscfg) are uploaded to Azure and these source files would still be with the developers
What would be the Solution?
Given that the package has been uploaded to Azure in the deployment phase, the short term solution is to have the packages uploaded again to the Cloud Services (cspkg and cscfg). This way, Azure will recreate the deployment the same way it was before and the applications will be up again within minutes.
What if for some reason I don’t have the packages anymore?
For every deployment made to Cloud Services, Azure stores the related package files (cspkg and cscfg) in an internal Azure Storage Account (where only Azure has access to) for a few days. Given that, we have an internal process for retrieving the packages and send them to the customer’s storage account. For this, you have to open a ticket with Azure Technical Support team and provide the following information:
- The url of a ‘Public Container’ from your Storage Account for where we can send package (e.g. https://mystorageaccount.blob.core.windows.net/packages )
- The Deployment ID for the package you want to recover
Note: The Deployment ID is the most important information in this process since this is the only way we can identify the related package files internally. The process can’t be completed without this information.
In case you don’t know where to find the deployment ID for a deleted Deployment, here are some tips to find it out:
- Check the Operations History for your Subscription in the Azure Portal and look for some operation made in the Cloud Service you want (staging or production slot) and get the Deployment ID from the operation details. For this login in the Azure Portal (manage.windowsazure.com) go to “Management Services | Operation Logs”
- In Visual Studio’s Server Explorer, under storage accounts you may find storages accounts associated with your cloud services and in their tables there may be some Log tables that contain the Deployment IDs.
- Ask for the Engineer who owns the case to look for any Operation ID from the Cloud Service and get the Deployment ID from Azure internal logs.
Note: Azure only keeps the Operation History for 90 days. So, any operation before it won’t be found and if there’s no operation in this time range for the Cloud Service we won’t be able to find out the Deployment ID.