PageRenderTime 64ms CodeModel.GetById 36ms RepoModel.GetById 1ms app.codeStats 0ms

/source/v2/samples/Azure HOL Files/End/CSManage/C#/ServiceManagement/Image.cs

#
C# | 297 lines | 181 code | 54 blank | 62 comment | 0 complexity | 4d4be7ff0c78bc75a5b3eee79422ec60 MD5 | raw file
Possible License(s): CC-BY-SA-3.0, Apache-2.0
  1. //---------------------------------------------------------------------------------
  2. // Microsoft (R) Windows Azure SDK
  3. // Software Development Kit
  4. //
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. //
  7. // THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
  8. // EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
  9. // OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
  10. //---------------------------------------------------------------------------------
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Collections.ObjectModel;
  14. using System.Diagnostics.CodeAnalysis;
  15. using System.Runtime.Serialization;
  16. using System.ServiceModel;
  17. using System.ServiceModel.Web;
  18. namespace Microsoft.Samples.WindowsAzure.ServiceManagement
  19. {
  20. /// <summary>
  21. /// The desired permission for generating a shared access signature.
  22. /// This enum is used in the prepare image upload operation.
  23. /// </summary>
  24. [DataContract(Namespace = Constants.ServiceManagementNS)]
  25. public enum ImageSharedAccessSignaturePermission
  26. {
  27. [EnumMember]
  28. Read,
  29. [EnumMember]
  30. ReadWrite
  31. }
  32. /// <summary>
  33. /// The status of an image upload.
  34. /// </summary>
  35. [DataContract(Namespace = Constants.ServiceManagementNS)]
  36. public enum ImageStatus
  37. {
  38. [EnumMember]
  39. Pending,
  40. [EnumMember]
  41. Committed
  42. }
  43. /// <summary>
  44. /// Input for the prepare image upload operation.
  45. /// </summary>
  46. [DataContract(Name = "PrepareMachineImage", Namespace = Constants.ServiceManagementNS)]
  47. public class PrepareImageUploadInput : IExtensibleDataObject
  48. {
  49. [DataMember(Order = 1)]
  50. public string Label { get; set; }
  51. [DataMember(Order = 2)]
  52. public string Description { get; set; }
  53. [DataMember(Order = 3)]
  54. public string Uuid { get; set; }
  55. [DataMember(Order = 4)]
  56. public string Timestamp { get; set; }
  57. [DataMember(Order = 5)]
  58. public long CompressedSizeInBytes { get; set; }
  59. [DataMember(Order = 6)]
  60. public long MountedSizeInBytes { get; set; }
  61. [DataMember(Order = 7, EmitDefaultValue = false)]
  62. public string Location { get; set; }
  63. [DataMember(Order = 8, EmitDefaultValue = false)]
  64. public string AffinityGroup { get; set; }
  65. [DataMember(Order = 9, EmitDefaultValue = false)]
  66. public string ParentUuid { get; set; }
  67. [DataMember(Order = 10, EmitDefaultValue = false)]
  68. public string ParentTimestamp { get; set; }
  69. public ExtensionDataObject ExtensionData { get; set; }
  70. }
  71. /// <summary>
  72. /// Input for the set image properties operation.
  73. /// </summary>
  74. [DataContract(Name="SetMachineImageProperties", Namespace = Constants.ServiceManagementNS)]
  75. public class SetMachineImagePropertiesInput : IExtensibleDataObject
  76. {
  77. [DataMember(Order = 1)]
  78. public string Label { get; set; }
  79. [DataMember(Order = 2)]
  80. public string Description { get; set; }
  81. public ExtensionDataObject ExtensionData { get; set; }
  82. }
  83. /// <summary>
  84. /// Input for the set parent image operation.
  85. /// </summary>
  86. [DataContract(Name="ParentMachineImage", Namespace = Constants.ServiceManagementNS)]
  87. public class SetParentImageInput : IExtensibleDataObject
  88. {
  89. [DataMember(Order = 1)]
  90. public string ParentImageName { get; set; }
  91. public ExtensionDataObject ExtensionData { get; set; }
  92. }
  93. /// <summary>
  94. /// Reference to an image that can be used for upload and download.
  95. /// </summary>
  96. [DataContract(Namespace = Constants.ServiceManagementNS)]
  97. public class MachineImageReference : IExtensibleDataObject
  98. {
  99. [DataMember(Order = 1)]
  100. public string SharedAccessSignatureUrl { get; set; }
  101. public ExtensionDataObject ExtensionData { get; set; }
  102. }
  103. /// <summary>
  104. /// List of images.
  105. /// </summary>
  106. [CollectionDataContract(Name="MachineImages",ItemName = "MachineImage",Namespace = Constants.ServiceManagementNS)]
  107. public class MachineImageList : List<MachineImage>
  108. {
  109. }
  110. /// <summary>
  111. /// Information associated with an image.
  112. /// </summary>
  113. [DataContract(Namespace = Constants.ServiceManagementNS)]
  114. public class MachineImage : IExtensibleDataObject
  115. {
  116. [DataMember(Order = 1)]
  117. public string Name { get; set; }
  118. [DataMember(Order = 2)]
  119. public string Label { get; set; }
  120. [DataMember(Order = 3)]
  121. public string Description { get; set; }
  122. [DataMember(Order = 4, EmitDefaultValue = false)]
  123. public string Location { get; set; }
  124. [DataMember(Order = 5, EmitDefaultValue = false)]
  125. public string AffinityGroup { get; set; }
  126. [DataMember(Order = 6)]
  127. public string Status { get; set; }
  128. [DataMember(Order = 7)]
  129. public string ParentImageName { get; set; }
  130. [DataMember(Order = 8)]
  131. public string Uuid { get; set; }
  132. [DataMember(Order = 9)]
  133. public string Timestamp { get; set; }
  134. [DataMember(Order = 10)]
  135. public long MountedSizeInBytes { get; set; }
  136. [DataMember(Order = 11)]
  137. public long CompressedSizeInBytes { get; set; }
  138. [DataMember(Order = 12, EmitDefaultValue = false)]
  139. public string ParentUuid { get; set; }
  140. [DataMember(Order = 13, EmitDefaultValue = false)]
  141. public string ParentTimestamp { get; set; }
  142. [DataMember(Order = 15)]
  143. public bool InUse { get; set; }
  144. public ExtensionDataObject ExtensionData { get; set; }
  145. }
  146. /// <summary>
  147. /// The image-specific part of the service management service.
  148. /// </summary>
  149. public partial interface IServiceManagement
  150. {
  151. /// <summary>
  152. /// Prepare an image for upload.
  153. /// </summary>
  154. [OperationContract(AsyncPattern = true)]
  155. [WebInvoke(Method = "PUT", UriTemplate = @"{subscriptionID}/machineimages/{imageName}")]
  156. IAsyncResult BeginPrepareImageUpload(string subscriptionId, string imageName, PrepareImageUploadInput input, AsyncCallback callback, object state);
  157. void EndPrepareImageUpload(IAsyncResult asyncResult);
  158. /// <summary>
  159. /// Get image reference.
  160. /// </summary>
  161. [OperationContract(AsyncPattern = true)]
  162. [WebGet(UriTemplate = @"{subscriptionID}/machineimages/{imageName}?comp=reference&expiry={expiry}&permission={permission}")]
  163. IAsyncResult BeginGetImageReference(string subscriptionID, string imageName, string expiry, string permission, AsyncCallback callback, object state);
  164. MachineImageReference EndGetImageReference(IAsyncResult asyncResult);
  165. /// <summary>
  166. /// Commit the upload of an image.
  167. /// </summary>
  168. [OperationContract(AsyncPattern = true)]
  169. [WebInvoke(Method = "POST", UriTemplate = @"{subscriptionID}/machineimages/{imageName}?comp=commitmachineimage")]
  170. IAsyncResult BeginCommitImageUpload(string subscriptionID, string imageName, AsyncCallback callback, object state);
  171. void EndCommitImageUpload(IAsyncResult asyncResult);
  172. /// <summary>
  173. /// List all images associated with a subscription.
  174. /// </summary>
  175. [OperationContract(AsyncPattern = true)]
  176. [WebGet(UriTemplate = @"{subscriptionID}/machineimages")]
  177. IAsyncResult BeginListImages(string subscriptionID, AsyncCallback callback, object state);
  178. MachineImageList EndListImages(IAsyncResult asyncResult);
  179. /// <summary>
  180. /// Get information about an image.
  181. /// </summary>
  182. [OperationContract(AsyncPattern = true)]
  183. [WebGet(UriTemplate = @"{subscriptionID}/machineimages/{imageName}")]
  184. IAsyncResult BeginGetImageProperties(string subscriptionID, string imageName, AsyncCallback callback, object state);
  185. MachineImage EndGetImageProperties(IAsyncResult asyncResult);
  186. /// <summary>
  187. /// Set image properties.
  188. /// </summary>
  189. [OperationContract(AsyncPattern = true)]
  190. [WebInvoke(Method = "POST", UriTemplate = @"{subscriptionID}/machineimages/{imagename}?comp=properties")]
  191. IAsyncResult BeginSetImageProperties(string subscriptionID, string imageName, SetMachineImagePropertiesInput imageProperties, AsyncCallback callback, object state);
  192. void EndSetImageProperties(IAsyncResult asyncResult);
  193. /// <summary>
  194. /// Set parent image.
  195. /// </summary>
  196. [OperationContract(AsyncPattern = true)]
  197. [WebInvoke(Method = "POST", UriTemplate = @"{subscriptionID}/machineimages/{imagename}?comp=setparent")]
  198. IAsyncResult BeginSetParentImage(string subscriptionID, string imageName, SetParentImageInput parentImageInput, AsyncCallback callback, object state);
  199. void EndSetParentImage(IAsyncResult asyncResult);
  200. /// <summary>
  201. /// Delete an image.
  202. /// </summary>
  203. [OperationContract(AsyncPattern = true)]
  204. [WebInvoke(Method = "DELETE", UriTemplate = @"{subscriptionID}/machineimages/{imageName}")]
  205. IAsyncResult BeginDeleteImage(string subscriptionID, string imageName, AsyncCallback callback, object state);
  206. void EndDeleteImage(IAsyncResult asyncResult);
  207. }
  208. public static partial class ServiceManagementExtensionMethods
  209. {
  210. public static void PrepareImageUpload(this IServiceManagement proxy, string subscriptionID, string imageName, PrepareImageUploadInput input)
  211. {
  212. proxy.EndPrepareImageUpload(proxy.BeginPrepareImageUpload(subscriptionID, imageName, input, null, null));
  213. }
  214. public static MachineImageReference GetImageReference(this IServiceManagement proxy, string subscriptionId, string imageName, DateTime expiry, ImageSharedAccessSignaturePermission accessModifier)
  215. {
  216. return proxy.EndGetImageReference(proxy.BeginGetImageReference(subscriptionId, imageName, expiry.ToString("o"), accessModifier.ToString().ToLower(), null, null));
  217. }
  218. public static void CommitImageUpload(this IServiceManagement proxy, string subscriptionId, string imageName)
  219. {
  220. proxy.EndCommitImageUpload(proxy.BeginCommitImageUpload(subscriptionId, imageName, null, null));
  221. }
  222. public static MachineImageList ListImages(this IServiceManagement proxy, string subscriptionID)
  223. {
  224. return proxy.EndListImages(proxy.BeginListImages(subscriptionID, null, null));
  225. }
  226. public static MachineImage GetImageProperties(this IServiceManagement proxy, string subscriptionID, string imageName)
  227. {
  228. return proxy.EndGetImageProperties(proxy.BeginGetImageProperties(subscriptionID, imageName, null, null));
  229. }
  230. public static void SetImageProperties(this IServiceManagement proxy, string subscriptionID, string imageName, SetMachineImagePropertiesInput input)
  231. {
  232. proxy.EndSetImageProperties(proxy.BeginSetImageProperties(subscriptionID, imageName, input, null, null));
  233. }
  234. public static void SetParentImage(this IServiceManagement proxy, string subscriptionID, string imageName, SetParentImageInput input)
  235. {
  236. proxy.EndSetParentImage(proxy.BeginSetParentImage(subscriptionID, imageName, input, null, null));
  237. }
  238. public static void DeleteImage(this IServiceManagement proxy, string subscriptionID, string imageName)
  239. {
  240. proxy.EndDeleteImage(proxy.BeginDeleteImage(subscriptionID, imageName, null, null));
  241. }
  242. }
  243. }