예제 #1
0
        /// <summary>
        /// Serializes the object to JSON.
        /// </summary>
        /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param>
        /// <param name="obj">The object to serialize to JSON.</param>
        internal static void Serialize(JsonWriter writer, ContainerCodePackageProperties obj)
        {
            // Required properties are always serialized, optional properties are serialized when not null.
            writer.WriteStartObject();
            writer.WriteProperty(obj.Name, "name", JsonWriterExtensions.WriteStringValue);
            writer.WriteProperty(obj.Image, "image", JsonWriterExtensions.WriteStringValue);
            writer.WriteProperty(obj.Resources, "resources", ResourceRequirementsConverter.Serialize);
            if (obj.ImageRegistryCredential != null)
            {
                writer.WriteProperty(obj.ImageRegistryCredential, "imageRegistryCredential", ImageRegistryCredentialConverter.Serialize);
            }

            if (obj.Entrypoint != null)
            {
                writer.WriteProperty(obj.Entrypoint, "entrypoint", JsonWriterExtensions.WriteStringValue);
            }

            if (obj.Commands != null)
            {
                writer.WriteEnumerableProperty(obj.Commands, "commands", (w, v) => writer.WriteStringValue(v));
            }

            if (obj.EnvironmentVariables != null)
            {
                writer.WriteEnumerableProperty(obj.EnvironmentVariables, "environmentVariables", EnvironmentVariableConverter.Serialize);
            }

            if (obj.Settings != null)
            {
                writer.WriteEnumerableProperty(obj.Settings, "settings", SettingConverter.Serialize);
            }

            if (obj.Labels != null)
            {
                writer.WriteEnumerableProperty(obj.Labels, "labels", ContainerLabelConverter.Serialize);
            }

            if (obj.Endpoints != null)
            {
                writer.WriteEnumerableProperty(obj.Endpoints, "endpoints", EndpointPropertiesConverter.Serialize);
            }

            if (obj.VolumeRefs != null)
            {
                writer.WriteEnumerableProperty(obj.VolumeRefs, "volumeRefs", ContainerVolumeConverter.Serialize);
            }

            if (obj.InstanceView != null)
            {
                writer.WriteProperty(obj.InstanceView, "instanceView", ContainerInstanceViewConverter.Serialize);
            }

            if (obj.Diagnostics != null)
            {
                writer.WriteProperty(obj.Diagnostics, "diagnostics", DiagnosticsRefConverter.Serialize);
            }

            writer.WriteEndObject();
        }
예제 #2
0
        /// <summary>
        /// Gets the object from Json properties.
        /// </summary>
        /// <param name="reader">The <see cref="T: Newtonsoft.Json.JsonReader" /> to read from, reader must be placed at first property.</param>
        /// <returns>The object Value.</returns>
        internal static ContainerCodePackageProperties GetFromJsonProperties(JsonReader reader)
        {
            var name  = default(string);
            var image = default(string);
            var imageRegistryCredential = default(ImageRegistryCredential);
            var entrypoint           = default(string);
            var commands             = default(IEnumerable <string>);
            var environmentVariables = default(IEnumerable <EnvironmentVariable>);
            var settings             = default(IEnumerable <Setting>);
            var labels                  = default(IEnumerable <ContainerLabel>);
            var endpoints               = default(IEnumerable <EndpointProperties>);
            var resources               = default(ResourceRequirements);
            var volumeRefs              = default(IEnumerable <VolumeReference>);
            var volumes                 = default(IEnumerable <ApplicationScopedVolume>);
            var diagnostics             = default(DiagnosticsRef);
            var reliableCollectionsRefs = default(IEnumerable <ReliableCollectionsRef>);
            var instanceView            = default(ContainerInstanceView);

            do
            {
                var propName = reader.ReadPropertyName();
                if (string.Compare("name", propName, StringComparison.Ordinal) == 0)
                {
                    name = reader.ReadValueAsString();
                }
                else if (string.Compare("image", propName, StringComparison.Ordinal) == 0)
                {
                    image = reader.ReadValueAsString();
                }
                else if (string.Compare("imageRegistryCredential", propName, StringComparison.Ordinal) == 0)
                {
                    imageRegistryCredential = ImageRegistryCredentialConverter.Deserialize(reader);
                }
                else if (string.Compare("entrypoint", propName, StringComparison.Ordinal) == 0)
                {
                    entrypoint = reader.ReadValueAsString();
                }
                else if (string.Compare("commands", propName, StringComparison.Ordinal) == 0)
                {
                    commands = reader.ReadList(JsonReaderExtensions.ReadValueAsString);
                }
                else if (string.Compare("environmentVariables", propName, StringComparison.Ordinal) == 0)
                {
                    environmentVariables = reader.ReadList(EnvironmentVariableConverter.Deserialize);
                }
                else if (string.Compare("settings", propName, StringComparison.Ordinal) == 0)
                {
                    settings = reader.ReadList(SettingConverter.Deserialize);
                }
                else if (string.Compare("labels", propName, StringComparison.Ordinal) == 0)
                {
                    labels = reader.ReadList(ContainerLabelConverter.Deserialize);
                }
                else if (string.Compare("endpoints", propName, StringComparison.Ordinal) == 0)
                {
                    endpoints = reader.ReadList(EndpointPropertiesConverter.Deserialize);
                }
                else if (string.Compare("resources", propName, StringComparison.Ordinal) == 0)
                {
                    resources = ResourceRequirementsConverter.Deserialize(reader);
                }
                else if (string.Compare("volumeRefs", propName, StringComparison.Ordinal) == 0)
                {
                    volumeRefs = reader.ReadList(VolumeReferenceConverter.Deserialize);
                }
                else if (string.Compare("volumes", propName, StringComparison.Ordinal) == 0)
                {
                    volumes = reader.ReadList(ApplicationScopedVolumeConverter.Deserialize);
                }
                else if (string.Compare("diagnostics", propName, StringComparison.Ordinal) == 0)
                {
                    diagnostics = DiagnosticsRefConverter.Deserialize(reader);
                }
                else if (string.Compare("reliableCollectionsRefs", propName, StringComparison.Ordinal) == 0)
                {
                    reliableCollectionsRefs = reader.ReadList(ReliableCollectionsRefConverter.Deserialize);
                }
                else if (string.Compare("instanceView", propName, StringComparison.Ordinal) == 0)
                {
                    instanceView = ContainerInstanceViewConverter.Deserialize(reader);
                }
                else
                {
                    reader.SkipPropertyValue();
                }
            }while (reader.TokenType != JsonToken.EndObject);

            var containerCodePackageProperties = new ContainerCodePackageProperties(
                name: name,
                image: image,
                imageRegistryCredential: imageRegistryCredential,
                entrypoint: entrypoint,
                commands: commands,
                environmentVariables: environmentVariables,
                settings: settings,
                labels: labels,
                endpoints: endpoints,
                resources: resources,
                volumeRefs: volumeRefs,
                volumes: volumes,
                diagnostics: diagnostics,
                reliableCollectionsRefs: reliableCollectionsRefs);

            containerCodePackageProperties.InstanceView = instanceView;
            return(containerCodePackageProperties);
        }