
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


map:
  name:
    type: str
  xos_dir:
    type: str
  logging:
    type: any
  wrappers:
    type: seq
    sequence:
    - type: str
  blueprints:
    type: seq
    sequence:
    - type: map
      map:
        name:
          type: str
          required: True
        graph:
          type: any
          required: True
        networks:
          type: seq
          sequence:
            - type: map
              map:
                name:
                  type: str
                permit_all_slices:
                  type: bool
                template:
                  type: str
                subnet:
                  type: str
                owner:
                  type: str
  dependency_graph:
    type: str
  link_graph:
    type: str
  steps_dir:
    type: str
  event_steps_dir:
    type: str
  pull_steps_dir:
    type: str
  sys_dir:
    type: str
  models_dir:
    type: str
  accessor:
    type: map
    required: True
    map:
      endpoint:
        type: str
      username:
        type: str
      password:
        type: str
      kind:
        type: str
        required: False
  event_bus:
    type: map
    required: False
    map:
      endpoint:
        type: str
      kind:
        type: str
        required: False
  required_models:
    type: seq
    sequence:
      - type: str
  keep_temp_files:
    type: bool
  proxy_ssh:
    type: map
    map:
      enabled:
        type: bool
        required: True
      key:
        type: str
      user:
        type: str
  enable_watchers:
    type: bool
  model_policies_dir:
    type: str
  error_map_path:
    type: str
  feefie:
    type: map
    map:
      client_id:
        type: str
      user_id:
        type: str
  node_key:
    type: str
  config_dir:
    type: str
  backoff_disabled:
    type: bool
  images_directory:
    type: str
  nova:
    type: map
    map:
      enabled:
        type: bool
      ca_ssl_cert:
        type: str
      default_flavor:
        type: str
      default_security_group:
        type: str
