/// <summary>
        /// Generates XML representing the given metrics properties.
        /// </summary>
        /// <param name="metrics">
        /// The metrics properties. 
        /// </param>
        /// <returns>
        /// An XML metrics element. 
        /// </returns>
        private static XElement GenerateMetricsXml(MetricsProperties metrics)
        {
            if (!Enum.IsDefined(typeof(MetricsLevel), metrics.MetricsLevel))
            {
                throw new InvalidOperationException("Invalid metrics level specified.");
            }

            if (string.IsNullOrEmpty(metrics.Version))
            {
                throw new InvalidOperationException("The metrics version is null or empty.");
            }

            var enabled = metrics.MetricsLevel != MetricsLevel.None;

            var xml = new XElement(
                MetricsName,
                new XElement(VersionName, metrics.Version),
                new XElement(EnabledName, enabled),
                GenerateRetentionPolicyXml(metrics.RetentionDays));

            if (enabled)
            {
                xml.Add(new XElement(IncludeApisName, metrics.MetricsLevel == MetricsLevel.ServiceAndApi));
            }

            return xml;
        }