Bring in opendaylight support 63/36563/4
authorMichael Polenchuk <mpolenchuk@mirantis.com>
Tue, 27 Jun 2017 08:52:39 +0000 (12:52 +0400)
committerMichael Polenchuk <mpolenchuk@mirantis.com>
Thu, 29 Jun 2017 12:35:25 +0000 (16:35 +0400)
Change-Id: I2eed0cf19907f257be1cb4aee96528cc41f4843a
Signed-off-by: Michael Polenchuk <mpolenchuk@mirantis.com>
17 files changed:
mcp/metadata/service/opendaylight/server/single.yml [new file with mode: 0644]
mcp/metadata/service/opendaylight/support.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/init.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml [new file with mode: 0644]
mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/init.yml [new file with mode: 0644]
mcp/reclass/nodes/cfg01.virtual-mcp-ocata-odl.local.yml [new file with mode: 0644]
mcp/salt-formulas/opendaylight/client.sls [new file with mode: 0644]
mcp/salt-formulas/opendaylight/files/jetty.xml [new file with mode: 0644]
mcp/salt-formulas/opendaylight/files/setenv.shell [new file with mode: 0644]
mcp/salt-formulas/opendaylight/init.sls [new file with mode: 0644]
mcp/salt-formulas/opendaylight/map.jinja [new file with mode: 0644]
mcp/salt-formulas/opendaylight/server.sls [new file with mode: 0644]

diff --git a/mcp/metadata/service/opendaylight/server/single.yml b/mcp/metadata/service/opendaylight/server/single.yml
new file mode 100644 (file)
index 0000000..4ee0aaf
--- /dev/null
@@ -0,0 +1,8 @@
+applications:
+- opendaylight
+parameters:
+  opendaylight:
+    server:
+      enabled: True
+      logging:
+        engine: syslog
diff --git a/mcp/metadata/service/opendaylight/support.yml b/mcp/metadata/service/opendaylight/support.yml
new file mode 100644 (file)
index 0000000..0e99236
--- /dev/null
@@ -0,0 +1,11 @@
+parameters:
+  opendaylight:
+    _support:
+      collectd:
+        enabled: false
+      heka:
+        enabled: false
+      sensu:
+        enabled: false
+      sphinx:
+        enabled: false
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/config.yml
new file mode 100644 (file)
index 0000000..4fbc787
--- /dev/null
@@ -0,0 +1,68 @@
+classes:
+- service.git.client
+- system.linux.system.single
+- system.linux.system.repo.mcp.salt
+- system.salt.master.api
+- system.salt.master.pkg
+- system.reclass.storage.salt
+- system.salt.minion.ca.salt_master
+- system.salt.minion.cert.proxy
+- system.mysql.client.single
+- system.reclass.storage.system.openstack_compute_multi
+- system.reclass.storage.system.openstack_gateway_single
+- system.reclass.storage.system.opendaylight_control_single
+- cluster.virtual-mcp-ocata-odl
+parameters:
+  _param:
+    openstack_control_node01_hostname: ctl01
+    reclass_data_repository: https://gerrit.opnfv.org/gerrit/fuel
+    reclass_data_revision: master
+    salt_master_environment_repository: "https://github.com/tcpcloud"
+    salt_master_environment_revision: master
+    reclass_config_master: 192.168.10.100
+    single_address: 172.16.10.100
+    salt_master_host: 127.0.0.1
+    salt_master_base_environment: prd
+    salt_minion_ca_host: ${linux:network:fqdn}
+    salt_api_password_hash: "$6$sGnRlxGf$al5jMCetLP.vfI/fTl3Z0N7Za1aeiexL487jAtyRABVfT3NlwZxQGVhO7S1N8OwS/34VHYwZQA8lkXwKMN/GS1"
+  linux:
+    network:
+      interface:
+        ens4:
+          enabled: true
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+  reclass:
+    storage:
+      node:
+        openstack_control_node01:
+          name: ${_param:openstack_control_node01_hostname}
+          domain: ${_param:cluster_domain}
+          classes:
+          - cluster.${_param:cluster_name}.openstack.control
+          params:
+            linux_system_codename: xenial
+            salt_master_host: ${_param:reclass_config_master}
+            single_address: ${_param:openstack_control_node01_address}
+        openstack_compute_node01:
+          params:
+            single_address: 172.16.10.105
+            tenant_address: 10.1.0.105
+            external_address: 10.16.0.105
+        openstack_compute_node02:
+          params:
+            single_address: 172.16.10.106
+            tenant_address: 10.1.0.106
+            external_address: 10.16.0.106
+        openstack_gateway_node01:
+          params:
+            tenant_address: 10.1.0.110
+            external_address: 10.16.0.110
+        opendaylight_control_node01:
+          classes:
+          - cluster.${_param:cluster_name}.opendaylight.control
+          params:
+            linux_system_codename: xenial
+            single_address: 172.16.10.111
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/infra/init.yml
new file mode 100644 (file)
index 0000000..9140bd0
--- /dev/null
@@ -0,0 +1,14 @@
+parameters:
+  linux:
+    network:
+      host:
+        cfg01:
+          address: ${_param:infra_config_address}
+          names:
+          - cfg01
+          - cfg01.${_param:cluster_domain}
+        cfg:
+          address: ${_param:infra_config_address}
+          names:
+          - cfg
+          - cfg.${_param:cluster_domain}
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/init.yml
new file mode 100644 (file)
index 0000000..8686613
--- /dev/null
@@ -0,0 +1,24 @@
+classes:
+- system.linux.system.single
+- cluster.virtual-mcp-ocata-odl.infra
+- cluster.virtual-mcp-ocata-odl.openstack
+
+parameters:
+  _param:
+    cluster_domain: virtual-mcp-ocata-odl.local
+    cluster_name: virtual-mcp-ocata-odl
+    # infra service addresses
+    infra_config_address: 172.16.10.100
+    # openstack service addresses
+    openstack_control_address: 172.16.10.101
+    openstack_control_node01_address: 172.16.10.101
+    openstack_control_node02_address: 172.16.10.102
+    openstack_control_node03_address: 172.16.10.103
+    openstack_database_address: ${_param:openstack_control_address}
+    openstack_message_queue_address: ${_param:openstack_control_address}
+    openstack_message_queue_node01_address: ${_param:openstack_control_node01_address}
+    openstack_message_queue_node02_address: ${_param:openstack_control_node02_address}
+    openstack_message_queue_node03_address: ${_param:openstack_control_node03_address}
+    openstack_gateway_address: 172.16.10.110
+    opendaylight_service_host: 172.16.10.111
+    control_address: ${_param:openstack_control_address}
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/opendaylight/control.yml
new file mode 100644 (file)
index 0000000..6c6640a
--- /dev/null
@@ -0,0 +1,32 @@
+classes:
+- system.linux.system.repo.ubuntu
+- system.linux.system.repo.mcp.openstack
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+- system.opendaylight.server.single
+- cluster.virtual-mcp-ocata-odl
+parameters:
+  _param:
+    linux_system_codename: xenial
+  linux:
+    network:
+      interface:
+        ens4:
+          enabled: true
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+  opendaylight:
+    server:
+      odl_bind_ip: ${_param:single_address}
+      odl_rest_port: 8282
+      java_min_mem: 3g
+      java_max_mem: 3g
+      karaf_features:
+        odl_default:
+          - odl-restconf-all
+          - odl-aaa-authn
+          - odl-dlux-all
+        netvirt:
+          - odl-netvirt-openstack
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/compute.yml
new file mode 100644 (file)
index 0000000..f0aed44
--- /dev/null
@@ -0,0 +1,81 @@
+classes:
+- system.linux.system.repo.mcp.openstack
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+- system.nova.compute.single
+- system.neutron.control.opendaylight.single
+- service.neutron.compute.single
+- cluster.virtual-mcp-ocata-odl
+parameters:
+  _param:
+    primary_interface: ens4
+    tenant_interface: ens5
+    external_interface: ens6
+    interface_mtu: 9000
+    linux_system_codename: xenial
+  nova:
+    compute:
+      vncproxy_url: http://${_param:cluster_vip_address}:6080
+      network:
+        region: ${_param:openstack_region}
+        user: neutron
+        tenant: service
+        password: ${_param:keystone_neutron_password}
+  neutron:
+    compute:
+      agent_mode: ${_param:neutron_compute_agent_mode}
+      message_queue:
+        host: ${_param:openstack_control_address}
+      metadata:
+        host: ${_param:openstack_control_address}
+  opendaylight:
+    client:
+      ovsdb_server_iface: ptcp:6639:127.0.0.1
+      ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640
+      tunnel_ip: ${_param:tenant_address}
+      provider_mappings: br-floating:float-to-ex
+  linux:
+    system:
+      repo:
+        uca:
+          source: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/ocata main"
+          architectures: amd64
+          key_id: EC4926EA
+          key_server: keyserver.ubuntu.com
+    network:
+      bridge: openvswitch
+      interface:
+        dhcp_int:
+          enabled: true
+          name: ens3
+          proto: dhcp
+          type: eth
+          mtu: ${_param:interface_mtu}
+        primary_interface:
+          enabled: true
+          name: ${_param:primary_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        tenant_interface:
+          enabled: true
+          name: ${_param:tenant_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        br-mgmt:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:primary_interface}
+        br-mesh:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:tenant_interface}
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/control.yml
new file mode 100644 (file)
index 0000000..c8b6480
--- /dev/null
@@ -0,0 +1,82 @@
+classes:
+- system.linux.system.lowmem
+- system.linux.system.repo.mcp.openstack
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+- system.memcached.server.single
+- system.rabbitmq.server.single
+- system.rabbitmq.server.vhost.openstack
+- system.keystone.server.wsgi
+- system.keystone.server.single
+- system.keystone.client.single
+- system.keystone.client.service.nova21
+- system.keystone.client.service.nova-placement
+- system.keystone.client.service.glare
+- system.keystone.client.service.cinder3
+- system.glance.control.single
+- system.nova.control.single
+- system.neutron.control.openvswitch.single
+- system.cinder.control.single
+- system.heat.server.single
+- service.mysql.server.single
+- system.galera.server.database.cinder
+- system.galera.server.database.glance
+- system.galera.server.database.grafana
+- system.galera.server.database.heat
+- system.galera.server.database.keystone
+- system.galera.server.database.nova
+- system.horizon.server.single
+- cluster.virtual-mcp-ocata-odl
+parameters:
+  _param:
+    linux_system_codename: xenial
+  linux:
+    system:
+      package:
+        python-msgpack:
+          version: latest
+    network:
+      interface:
+        ens4:
+          enabled: true
+          type: eth
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+  keystone:
+    server:
+      admin_email: ${_param:admin_email}
+      pkgs:
+      - keystone
+      - python-keystone
+      - python-keystoneclient
+      - python-psycopg2
+      - python-mysqldb
+      - python-six
+      - python-memcache
+      - python-openstackclient
+      - gettext-base
+      - python-pycadf
+  glance:
+    server:
+      storage:
+        engine: file
+      images: []
+      workers: 1
+  nova:
+    controller:
+      networking: dvr
+      cpu_allocation: 54
+      metadata:
+        password: ${_param:metadata_password}
+      bind:
+        private_address: ${_param:cluster_local_address}
+        public_address: ${_param:cluster_vip_address}
+        novncproxy_port: 6080
+      vncproxy_url: http://${_param:cluster_vip_address}:6080
+      workers: 1
+  mysql:
+    server:
+      version: '5.7'
+      bind:
+        address: ${_param:cluster_local_address}
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/gateway.yml
new file mode 100644 (file)
index 0000000..522998d
--- /dev/null
@@ -0,0 +1,95 @@
+classes:
+- system.linux.system.repo.mcp.openstack
+- system.linux.system.repo.mcp.extra
+- system.linux.system.repo.saltstack.xenial
+- system.neutron.control.opendaylight.single
+- service.neutron.gateway.single
+- cluster.virtual-mcp-ocata-odl
+parameters:
+  _param:
+    primary_interface: ens4
+    tenant_interface: ens5
+    external_interface: ens6
+    interface_mtu: 9000
+    linux_system_codename: xenial
+  neutron:
+    gateway:
+      agent_mode: ${_param:neutron_gateway_agent_mode}
+  opendaylight:
+    client:
+      ovsdb_server_iface: ptcp:6639:127.0.0.1
+      ovsdb_odl_iface: tcp:${_param:opendaylight_service_host}:6640
+      tunnel_ip: ${_param:tenant_address}
+      provider_mappings: br-floating:float-to-ex
+  linux:
+    system:
+      repo:
+        uca:
+          source: "deb http://ubuntu-cloud.archive.canonical.com/ubuntu xenial-updates/ocata main"
+          architectures: amd64
+          key_id: EC4926EA
+          key_server: keyserver.ubuntu.com
+    network:
+      bridge: openvswitch
+      interface:
+        dhcp_int:
+          enabled: true
+          name: ens3
+          proto: dhcp
+          type: eth
+          mtu: ${_param:interface_mtu}
+        primary_interface:
+          enabled: true
+          name: ${_param:primary_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        tenant_interface:
+          enabled: true
+          name: ${_param:tenant_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        external_interface:
+          enabled: true
+          name: ${_param:external_interface}
+          mtu: ${_param:interface_mtu}
+          proto: manual
+          type: eth
+        br-floating:
+          enabled: true
+          type: ovs_bridge
+          mtu: ${_param:interface_mtu}
+        br-mgmt:
+          enabled: true
+          type: bridge
+          proto: static
+          address: ${_param:single_address}
+          netmask: 255.255.255.0
+          mtu: ${_param:interface_mtu}
+          use_interfaces:
+          - ${_param:primary_interface}
+        br-mesh:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
+          proto: static
+          address: ${_param:tenant_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:tenant_interface}
+        float-to-ex:
+          enabled: true
+          type: ovs_port
+          mtu: ${_param:interface_mtu}
+          bridge: br-floating
+        br-ex:
+          enabled: true
+          type: bridge
+          mtu: ${_param:interface_mtu}
+          address: ${_param:external_address}
+          netmask: 255.255.255.0
+          use_interfaces:
+          - ${_param:external_interface}
+          use_ovs_ports:
+          - float-to-ex
diff --git a/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/init.yml b/mcp/reclass/classes/cluster/virtual-mcp-ocata-odl/openstack/init.yml
new file mode 100644 (file)
index 0000000..73445ac
--- /dev/null
@@ -0,0 +1,123 @@
+parameters:
+  _param:
+    openstack_version: ocata
+    apt_mk_version: nightly
+    mcp_repo_version: 1.1
+    openstack_region: RegionOne
+    admin_email: root@localhost
+    cluster_public_protocol: http
+    cluster_public_host: 172.16.10.101
+    neutron_public_protocol: http
+    neutron_control_dvr: False
+    neutron_tenant_network_types: "flat,vxlan"
+    neutron_l3_ha: False
+    neutron_global_physnet_mtu: 1500
+    neutron_external_mtu: 1500
+    neutron_gateway_dvr: False
+    neutron_gateway_agent_mode: legacy
+    neutron_compute_dvr: False
+    neutron_compute_agent_mode: legacy
+    neutron_compute_external_access: False
+    galera_server_cluster_name: openstack_cluster
+    galera_server_maintenance_password: opnfv_secret
+    galera_server_admin_password: opnfv_secret
+    cluster_vip_address: ${_param:cluster_public_host}
+    cluster_local_address: ${_param:single_address}
+    cluster_node01_hostname: ctl01
+    cluster_node01_address: 172.16.10.101
+    cluster_node02_hostname: ctl02
+    cluster_node02_address: 172.16.10.102
+    cluster_node03_hostname: ctl03
+    cluster_node03_address: 172.16.10.103
+    rabbitmq_secret_key: opnfv_secret
+    rabbitmq_admin_password: opnfv_secret
+    rabbitmq_openstack_password: opnfv_secret
+    rabbitmq_cold_password: opnfv_secret
+    glance_version: ${_param:openstack_version}
+    glance_service_host: ${_param:cluster_vip_address}
+    keystone_version: ${_param:openstack_version}
+    keystone_service_host: ${_param:cluster_vip_address}
+    heat_version: ${_param:openstack_version}
+    heat_service_host: ${_param:cluster_vip_address}
+    heat_domain_admin_password: opnfv_secret
+    ceilometer_version: ${_param:openstack_version}
+    ceilometer_service_host: 172.16.10.108
+    ceilometer_database_host: ${_param:cluster_local_address}
+    cinder_version: ${_param:openstack_version}
+    cinder_service_host: ${_param:cluster_vip_address}
+    ceilometer_graphite_publisher_host: 172.16.10.107
+    ceilometer_graphite_publisher_port: 2013
+    nova_version: ${_param:openstack_version}
+    nova_service_host: ${_param:cluster_vip_address}
+    nova_vncproxy_url: http://${_param:cluster_vip_address}:8060
+    neutron_version: ${_param:openstack_version}
+    neutron_service_host: ${_param:cluster_vip_address}
+    glusterfs_service_host: ${_param:cluster_vip_address}
+    metadata_password: password
+    mysql_admin_user: root
+    mysql_admin_password: opnfv_secret
+    mysql_cinder_password: opnfv_secret
+    mysql_ceilometer_password: opnfv_secret
+    mysql_glance_password: opnfv_secret
+    mysql_grafana_password: opnfv_secret
+    mysql_heat_password: opnfv_secret
+    mysql_keystone_password: opnfv_secret
+    mysql_neutron_password: opnfv_secret
+    mysql_nova_password: opnfv_secret
+    mysql_aodh_password: opnfv_secret
+    keystone_service_token: opnfv_secret
+    keystone_admin_password: opnfv_secret
+    keystone_ceilometer_password: opnfv_secret
+    keystone_cinder_password: opnfv_secret
+    keystone_glance_password: opnfv_secret
+    keystone_heat_password: opnfv_secret
+    keystone_keystone_password: opnfv_secret
+    keystone_neutron_password: opnfv_secret
+    keystone_nova_password: opnfv_secret
+    ceilometer_secret_key: opnfv_secret
+    metadata_password: opnfv_secret
+    horizon_version: ${_param:openstack_version}
+    horizon_secret_key: opaesee8Que2yahJoh9fo0eefo1Aeyo6ahyei8zeiboh3aeth5loth7ieNa5xi5e
+    horizon_identity_host: ${_param:cluster_vip_address}
+    horizon_identity_encryption: none
+    horizon_identity_version: 3
+    mongodb_server_replica_set: ceilometer
+    mongodb_ceilometer_password: cloudlab
+    mongodb_admin_password: cloudlab
+    mongodb_shared_key: eoTh1AwahlahqueingeejooLughah4tei9feing0eeVaephooDi2li1TaeV1ooth
+    aodh_version: ${_param:openstack_version}
+    keystone_aodh_password: opnfv_secret
+    aodh_service_host: 172.16.10.108
+  linux:
+    network:
+      host:
+        ctl:
+          address: ${_param:openstack_control_address}
+          names:
+          - ctl
+          - ctl.${_param:cluster_domain}
+        ctl01:
+          address: ${_param:openstack_control_node01_address}
+          names:
+          - ctl01
+          - ctl01.${_param:cluster_domain}
+        gtw01:
+          address: ${_param:openstack_gateway_address}
+          names:
+          - gtw01
+          - gtw01.${_param:cluster_domain}
+        cmp01:
+          address: 172.16.10.105
+          names:
+          - cmp01
+          - cmp01.${_param:cluster_domain}
+        cmp02:
+          address: 172.16.10.106
+          names:
+          - cmp02
+          - cmp02.${_param:cluster_domain}
+        odl01:
+          address: 172.16.10.111
+          names:
+          - odl01
+          - odl01.${_param:cluster_domain}
diff --git a/mcp/reclass/nodes/cfg01.virtual-mcp-ocata-odl.local.yml b/mcp/reclass/nodes/cfg01.virtual-mcp-ocata-odl.local.yml
new file mode 100644 (file)
index 0000000..4e168e4
--- /dev/null
@@ -0,0 +1,10 @@
+classes:
+- cluster.virtual-mcp-ocata-odl.infra.config
+parameters:
+  _param:
+    linux_system_codename: xenial
+    reclass_data_revision: master
+  linux:
+    system:
+      name: cfg01
+      domain: virtual-mcp-ocata-odl.local
diff --git a/mcp/salt-formulas/opendaylight/client.sls b/mcp/salt-formulas/opendaylight/client.sls
new file mode 100644 (file)
index 0000000..1abe874
--- /dev/null
@@ -0,0 +1,27 @@
+{%- from "opendaylight/map.jinja" import client with context %}
+{%- if client.get('enabled', True) %}
+
+opendaylight_client_packages:
+  pkg.installed:
+  - pkgs: {{ client.pkgs }}
+
+ovs_set_manager:
+  cmd.run:
+  - name: "ovs-vsctl set-manager {{ client.ovsdb_server_iface }} {{ client.ovsdb_odl_iface }}"
+  - unless: "ovs-vsctl get-manager | fgrep -x {{ client.ovsdb_odl_iface }}"
+
+ovs_set_tunnel_endpoint:
+  cmd.run:
+  - name: "ovs-vsctl set Open_vSwitch . other_config:local_ip={{ client.tunnel_ip }}"
+  - unless: "ovs-vsctl get Open_vSwitch . other_config | fgrep local_ip"
+  - require:
+    - cmd: ovs_set_manager
+
+ovs_set_provider_mapping:
+  cmd.run:
+  - name: "ovs-vsctl set Open_vSwitch . other_config:provider_mappings={{ client.provider_mappings }}"
+  - unless: "ovs-vsctl get Open_vSwitch . other_config | fgrep provider_mappings"
+  - require:
+    - cmd: ovs_set_manager
+
+{%- endif %}
diff --git a/mcp/salt-formulas/opendaylight/files/jetty.xml b/mcp/salt-formulas/opendaylight/files/jetty.xml
new file mode 100644 (file)
index 0000000..062568c
--- /dev/null
@@ -0,0 +1,107 @@
+{%- from "opendaylight/map.jinja" import server with context -%}
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+-->
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//
+DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+
+<Configure class="org.eclipse.jetty.server.Server">
+
+    <!-- =========================================================== -->
+    <!-- Set connectors -->
+    <!-- =========================================================== -->
+    <!-- One of each type! -->
+    <!-- =========================================================== -->
+
+    <!-- Use this connector for many frequently idle connections and for
+        threadless continuations. -->
+    <Call name="addConnector">
+        <Arg>
+            <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
+                <Set name="host">{{ server.odl_bind_ip }}
+                    <Property name="jetty.host" />
+                </Set>
+                <Set name="port">
+                    <Property name="jetty.port" default="8181" />
+                </Set>
+                <Set name="maxIdleTime">300000</Set>
+                <Set name="Acceptors">2</Set>
+                <Set name="statsOn">false</Set>
+                <Set name="confidentialPort">8543</Set>
+                <Set name="lowResourcesConnections">20000</Set>
+                <Set name="lowResourcesMaxIdleTime">5000</Set>
+            </New>
+        </Arg>
+    </Call>
+    <Call name="addConnector">
+      <Arg>
+        <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
+          <Set name="host">{{ server.odl_bind_ip }}
+            <Property name="jetty.host" />
+          </Set>
+          <Set name="port">
+            <Property name="jetty.port" default="{{ server.odl_rest_port }}" />
+          </Set>
+          <Set name="maxIdleTime">300000</Set>
+          <Set name="Acceptors">2</Set>
+          <Set name="statsOn">false</Set>
+          <Set name="confidentialPort">8443</Set>
+          <Set name="lowResourcesConnections">20000</Set>
+          <Set name="lowResourcesMaxIdleTime">5000</Set>
+        </New>
+      </Arg>
+    </Call>
+
+    <!-- =========================================================== -->
+    <!-- Configure Authentication Realms -->
+    <!-- Realms may be configured for the entire server here, or -->
+    <!-- they can be configured for a specific web app in a context -->
+    <!-- configuration (see $(jetty.home)/contexts/test.xml for an -->
+    <!-- example). -->
+    <!-- =========================================================== -->
+    <Call name="addBean">
+        <Arg>
+            <New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
+                <Set name="name">karaf</Set>
+                <Set name="loginModuleName">karaf</Set>
+                <Set name="roleClassNames">
+                    <Array type="java.lang.String">
+                        <Item>org.apache.karaf.jaas.boot.principal.RolePrincipal
+                        </Item>
+                    </Array>
+                </Set>
+            </New>
+        </Arg>
+    </Call>
+    <Call name="addBean">
+        <Arg>
+            <New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
+                <Set name="name">default</Set>
+                <Set name="loginModuleName">karaf</Set>
+                <Set name="roleClassNames">
+                    <Array type="java.lang.String">
+                        <Item>org.apache.karaf.jaas.boot.principal.RolePrincipal
+                        </Item>
+                    </Array>
+                </Set>
+            </New>
+        </Arg>
+    </Call>
+
+</Configure>
diff --git a/mcp/salt-formulas/opendaylight/files/setenv.shell b/mcp/salt-formulas/opendaylight/files/setenv.shell
new file mode 100644 (file)
index 0000000..972bbef
--- /dev/null
@@ -0,0 +1,15 @@
+{%- from "opendaylight/map.jinja" import server with context -%}
+# export JAVA_HOME # Location of Java installation
+export JAVA_MIN_MEM={{ server.java_min_mem }} # Minimum memory for the JVM
+export JAVA_MAX_MEM={{ server.java_max_mem }} # Maximum memory for the JVM
+# export JAVA_PERM_MEM # Minimum perm memory for the JVM
+export JAVA_MAX_PERM_MEM=512m # Maximum perm memory for the JVM
+export EXTRA_JAVA_OPTS='{{ server.java_extra_opts }}' # Additional JVM options
+# export KARAF_HOME # Karaf home folder
+# export KARAF_DATA # Karaf data folder
+# export KARAF_BASE # Karaf base folder
+# export KARAF_ETC  # Karaf etc  folder
+# export KARAF_OPTS # Additional available Karaf options
+# export KARAF_DEBUG # Enable debug mode
+# export KARAF_REDIRECT # Enable/set the std/err redirection when using bin/start
+
diff --git a/mcp/salt-formulas/opendaylight/init.sls b/mcp/salt-formulas/opendaylight/init.sls
new file mode 100644 (file)
index 0000000..17feb15
--- /dev/null
@@ -0,0 +1,5 @@
+
+include:
+{% if pillar.opendaylight.server is defined %}
+- opendaylight.server
+{% endif %}
diff --git a/mcp/salt-formulas/opendaylight/map.jinja b/mcp/salt-formulas/opendaylight/map.jinja
new file mode 100644 (file)
index 0000000..0f6bf3c
--- /dev/null
@@ -0,0 +1,27 @@
+
+{% set server = salt['grains.filter_by']({
+    'Debian': {
+      'karaf_features': {'default': ['config', 'standard', 'region', 'package', 'kar', 'ssh', 'management']},
+      'odl_rest_port': '8282',
+      'odl_bind_ip': '0.0.0.0',
+      'repo': 'odl-team/carbon',
+      'log_levels': {},
+      'enable_ha': false,
+      'ha_node_ips': [],
+      'ha_node_index': 0,
+      'security_group_mode': 'stateful',
+      'vpp_routing_node': '',
+      'java_extra_opts': '-Djava.net.preferIPv4Stack=true -XX:+UseG1GC',
+      'java_min_mem': '1g',
+      'java_max_mem': '2g',
+    },
+    'RedHat': {
+      'repo': 'opendaylight-6-testing'
+    },
+}, merge=salt['pillar.get']('opendaylight:server')) %}
+
+{%- set client = salt['grains.filter_by']({
+  'Debian': {
+    'pkgs': ['python-networking-odl'],
+  },
+}, merge=salt['pillar.get']('opendaylight:client')) %}
diff --git a/mcp/salt-formulas/opendaylight/server.sls b/mcp/salt-formulas/opendaylight/server.sls
new file mode 100644 (file)
index 0000000..cb5b312
--- /dev/null
@@ -0,0 +1,49 @@
+{% from "opendaylight/map.jinja" import server with context %}
+
+{%- if server.enabled %}
+
+opendaylight_repo:
+  pkgrepo.managed:
+  - ppa: {{ server.repo }}
+
+opendaylight:
+  pkg.installed:
+  - require:
+    - pkgrepo: opendaylight_repo
+  - require_in:
+    - file: /opt/opendaylight/etc/jetty.xml
+    - file: /opt/opendaylight/bin/setenv
+    - file: /opt/opendaylight/etc/org.apache.karaf.features.cfg
+  service.running:
+  - enable: true
+  - watch:
+    - file: /opt/opendaylight/etc/jetty.xml
+    - file: /opt/opendaylight/bin/setenv
+    - file: /opt/opendaylight/etc/org.apache.karaf.features.cfg
+
+/opt/opendaylight/etc/jetty.xml:
+  file.managed:
+  - source: salt://opendaylight/files/jetty.xml
+  - template: jinja
+  - user: odl
+  - group: odl
+
+/opt/opendaylight/bin/setenv:
+  file.managed:
+  - source: salt://opendaylight/files/setenv.shell
+  - mode: 0755
+  - use:
+    - file: /opt/opendaylight/etc/jetty.xml
+
+{% set features %}
+{%- for f in server.karaf_features.itervalues() -%}
+{{ f | join(',') }}{%- if not loop.last %},{%- endif %}
+{%- endfor %}
+{% endset %}
+
+/opt/opendaylight/etc/org.apache.karaf.features.cfg:
+  file.replace:
+  - pattern: ^featuresBoot=.*$
+  - repl: "featuresBoot={{ features }}"
+
+{%- endif %}