# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class PipelineGraph(Model):
    """PipelineGraph.

    :param graph_modules:
    :type graph_modules: list[~designer.models.ModuleEntity]
    :param graph_module_dtos:
    :type graph_module_dtos: list[~designer.models.ModuleDto]
    :param graph_data_sources:
    :type graph_data_sources: list[~designer.models.DataInfo]
    :param module_node_run_settings:
    :type module_node_run_settings:
     list[~designer.models.GraphModuleNodeRunSetting]
    :param sub_pipelines_info:
    :type sub_pipelines_info: ~designer.models.SubPipelinesInfo
    :param module_nodes:
    :type module_nodes: list[~designer.models.GraphModuleNode]
    :param dataset_nodes:
    :type dataset_nodes: list[~designer.models.GraphDatasetNode]
    :param edges:
    :type edges: list[~designer.models.GraphEdge]
    :param entity_interface:
    :type entity_interface: ~designer.models.EntityInterface
    :param graph_layout:
    :type graph_layout: ~designer.models.GraphLayout
    :param created_by:
    :type created_by: ~designer.models.CreatedBy
    :param last_updated_by:
    :type last_updated_by: ~designer.models.CreatedBy
    :param default_compute:
    :type default_compute: ~designer.models.ComputeSetting
    :param default_datastore:
    :type default_datastore: ~designer.models.DatastoreSetting
    :param id:
    :type id: str
    :param etag:
    :type etag: str
    :param created_date:
    :type created_date: datetime
    :param last_modified_date:
    :type last_modified_date: datetime
    """

    _attribute_map = {
        'graph_modules': {'key': 'graphModules', 'type': '[ModuleEntity]'},
        'graph_module_dtos': {'key': 'graphModuleDtos', 'type': '[ModuleDto]'},
        'graph_data_sources': {'key': 'graphDataSources', 'type': '[DataInfo]'},
        'module_node_run_settings': {'key': 'moduleNodeRunSettings', 'type': '[GraphModuleNodeRunSetting]'},
        'sub_pipelines_info': {'key': 'subPipelinesInfo', 'type': 'SubPipelinesInfo'},
        'module_nodes': {'key': 'moduleNodes', 'type': '[GraphModuleNode]'},
        'dataset_nodes': {'key': 'datasetNodes', 'type': '[GraphDatasetNode]'},
        'edges': {'key': 'edges', 'type': '[GraphEdge]'},
        'entity_interface': {'key': 'entityInterface', 'type': 'EntityInterface'},
        'graph_layout': {'key': 'graphLayout', 'type': 'GraphLayout'},
        'created_by': {'key': 'createdBy', 'type': 'CreatedBy'},
        'last_updated_by': {'key': 'lastUpdatedBy', 'type': 'CreatedBy'},
        'default_compute': {'key': 'defaultCompute', 'type': 'ComputeSetting'},
        'default_datastore': {'key': 'defaultDatastore', 'type': 'DatastoreSetting'},
        'id': {'key': 'id', 'type': 'str'},
        'etag': {'key': 'etag', 'type': 'str'},
        'created_date': {'key': 'createdDate', 'type': 'iso-8601'},
        'last_modified_date': {'key': 'lastModifiedDate', 'type': 'iso-8601'},
    }

    def __init__(self, *, graph_modules=None, graph_module_dtos=None, graph_data_sources=None, module_node_run_settings=None, sub_pipelines_info=None, module_nodes=None, dataset_nodes=None, edges=None, entity_interface=None, graph_layout=None, created_by=None, last_updated_by=None, default_compute=None, default_datastore=None, id: str=None, etag: str=None, created_date=None, last_modified_date=None, **kwargs) -> None:
        super(PipelineGraph, self).__init__(**kwargs)
        self.graph_modules = graph_modules
        self.graph_module_dtos = graph_module_dtos
        self.graph_data_sources = graph_data_sources
        self.module_node_run_settings = module_node_run_settings
        self.sub_pipelines_info = sub_pipelines_info
        self.module_nodes = module_nodes
        self.dataset_nodes = dataset_nodes
        self.edges = edges
        self.entity_interface = entity_interface
        self.graph_layout = graph_layout
        self.created_by = created_by
        self.last_updated_by = last_updated_by
        self.default_compute = default_compute
        self.default_datastore = default_datastore
        self.id = id
        self.etag = etag
        self.created_date = created_date
        self.last_modified_date = last_modified_date
