added ubuntu charm for local deployment charm to configure the 23/3123/1
authorNarinder Gupta <narinder.gupta@canonical.com>
Sat, 7 Nov 2015 06:38:58 +0000 (00:38 -0600)
committerNarinder Gupta <narinder.gupta@canonical.com>
Sat, 7 Nov 2015 06:42:36 +0000 (00:42 -0600)
network according to the labs.

Change-Id: I103b6dc243f025a4916d1057c247d01ee8f175ee

37 files changed:
ci/01-deploybundle.sh
ci/bundles.yaml [new file with mode: 0644]
ci/deployment.yaml [new file with mode: 0755]
ci/maas/intel/pod5/deployment.yaml
ci/maas/intel/pod5/environment.yaml [deleted file]
ci/maas/intel/pod5/interfaces.host [new file with mode: 0644]
ci/maas/intel/pod5/lxc-add-more-interfaces [new file with mode: 0755]
ci/maas/intel/pod6/deployment.yaml
ci/maas/intel/pod6/interfaces.host [new file with mode: 0644]
ci/maas/intel/pod6/lxc-add-more-interfaces [new file with mode: 0755]
ci/maas/orange/pod2/compute-interfaces.host [new file with mode: 0644]
ci/maas/orange/pod2/control-interfaces.host [new file with mode: 0644]
ci/maas/orange/pod2/deployment.yaml
ci/maas/orange/pod2/interfaces.host [new file with mode: 0644]
ci/maas/orange/pod2/lxc-add-more-interfaces [new file with mode: 0755]
ci/odl/01-deploybundle.sh
ci/odl/juju-deployer/ovs-odl-ha.yaml
ci/trusty/ubuntu-nodes-compute/README [new file with mode: 0644]
ci/trusty/ubuntu-nodes-compute/copyright [new file with mode: 0644]
ci/trusty/ubuntu-nodes-compute/hooks/install [new file with mode: 0755]
ci/trusty/ubuntu-nodes-compute/icon.svg [new file with mode: 0644]
ci/trusty/ubuntu-nodes-compute/lxc/add-more-interface [new file with mode: 0755]
ci/trusty/ubuntu-nodes-compute/lxc/add-more-interfaces [new file with mode: 0755]
ci/trusty/ubuntu-nodes-compute/lxc/ubuntu-cloud.trusty.conf [new file with mode: 0644]
ci/trusty/ubuntu-nodes-compute/metadata.yaml [new file with mode: 0644]
ci/trusty/ubuntu-nodes-compute/network/interfaces.host [new file with mode: 0644]
ci/trusty/ubuntu-nodes-compute/revision [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/README [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/copyright [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/hooks/install [new file with mode: 0755]
ci/trusty/ubuntu-nodes-controller/icon.svg [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/lxc/add-more-interface [new file with mode: 0755]
ci/trusty/ubuntu-nodes-controller/lxc/add-more-interfaces [new file with mode: 0755]
ci/trusty/ubuntu-nodes-controller/lxc/ubuntu-cloud.trusty.conf [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/metadata.yaml [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/network/interfaces.host [new file with mode: 0644]
ci/trusty/ubuntu-nodes-controller/revision [new file with mode: 0644]

index 9de9aa2..fee0a51 100755 (executable)
@@ -8,7 +8,6 @@ case "$1" in
         ;;
     'ha' )
         cp odl/juju-deployer/ovs-odl-ha.yaml ./bundles.yaml
-        juju-deployer -d -r 13 -c bundles.yaml openstack-phase1
         ;;
     'tip' )
         cp odl/juju-deployer/ovs-odl-tip.yaml ./bundles.yaml
@@ -20,13 +19,49 @@ esac
 
 case "$3" in
     'orangepod2' )
+        cp maas/orange/pod2/control-interfaces.host trusty/ubuntu-nodes-controller/network/interfaces.host
+        cp maas/orange/pod2/lxc-add-more-interfaces trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
+        cp maas/orange/pod2/compute-interfaces.host trusty/ubuntu-nodes-compute/network/interfaces.host
+        cp maas/orange/pod2/lxc-add-more-interfaces trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
         sed -i -- 's/10.4.1.1/192.168.2.2/g' ./bundles.yaml
+        sed -i -- 's/#os-data-network: 10.4.8.0\/21/os-data-network: 192.168.12.0\/24/g' ./bundles.yaml
+        ;;
+    'intelpod6' )
+        cp maas/intel/pod6/interfaces.host trusty/ubuntu-nodes-controller/network/interfaces.host
+        cp maas/intel/pod6/lxc-add-more-interfaces trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
+        cp maas/intel/pod6/interfaces.host trusty/ubuntu-nodes-compute/network/interfaces.host
+        cp maas/intel/pod6/lxc-add-more-interfaces trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
+        sed -i -- 's/10.4.1.1/10.4.1.2/g' ./bundles.yaml
+        sed -i -- 's/#os-data-network: 10.4.8.0\/21/os-data-network: 10.4.9.0\/24/g' ./bundles.yaml
+        ;;
+    'intelpod5' )
+        cp maas/intel/pod5/interfaces.host trusty/ubuntu-nodes-controller/network/interfaces.host
+        cp maas/intel/pod5/lxc-add-more-interfaces trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
+        cp maas/intel/pod5/interfaces.host trusty/ubuntu-nodes-compute/network/interfaces.host
+        cp maas/intel/pod5/lxc-add-more-interfaces trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
+        sed -i -- 's/10.4.1.1/10.4.1.2/g' ./bundles.yaml
+        sed -i -- 's/#os-data-network: 10.4.8.0\/21/os-data-network: 10.4.9.0\/24/g' ./bundles.yaml
         ;;
 esac
 
 echo "... Deployment Started ...."
-
-#case openstack kilo with odl
-juju-deployer -d -r 13 -c bundles.yaml trusty-"$2"
+case "$1" in
+    'nonha' )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
+    'ha' )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
+    'tip' )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
+    * )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
+esac
 
 echo "... Deployment finished ...."
diff --git a/ci/bundles.yaml b/ci/bundles.yaml
new file mode 100644 (file)
index 0000000..8af86f8
--- /dev/null
@@ -0,0 +1,269 @@
+# vim: set ts=2 et:
+openstack-phase1:
+  series: trusty
+  services:
+    nodes-api:
+      charm: "local:trusty/ubuntu-nodes-controller"
+      num_units: 3
+      constraints: tags=control
+    nodes-compute:
+      charm: "local:trusty/ubuntu-nodes-controller"
+      num_units: 1
+      constraints: tags=compute
+    "ntp": 
+      charm: "cs:trusty/ntp"
+  relations:
+    - - "ntp:juju-info"
+      - "nodes-api:juju-info"
+    - - "ntp:juju-info"
+      - "nodes-compute:juju-info"
+openstack-phase2: 
+  inherits: openstack-phase1
+  services: 
+    "percona-cluster": 
+      charm: "cs:trusty/percona-cluster"
+      num_units: 3
+      options: 
+        "dataset-size": 2G
+        "lp1366997-workaround": true
+        "max-connections": 10000
+        "root-password": 293rhc395m
+        "sst-password": 127rc14t51
+        vip: 10.4.1.25
+      to:
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    "hacluster-keystone":
+      charm: "cs:trusty/hacluster"
+      options:
+        corosync_key: |
+          'QisjNpoKHLkvyc3PEdDHP5VZjgD0kOk9t0ABPWmCELlu5AgWgnW6bJd34BVXO7VhW+3ZwNQM3W+bZ3pl28ftY4ki4N/S0KLFNia5egFgiA3AH2QXLnokS7OYXuu6GMJJ1S5mDe6P5zU+tfJe/Mebq24u7CgR0gAvohSPRdDTwdY='
+    "hacluster-horizon":
+      charm: "cs:trusty/hacluster"
+      options:
+        corosync_key: |
+          'aCVPHw6XYne+Hxv0WPiM3+yEfeIxs0Ly0EMKB494Rdzjf5rE52GcXqqxuvIa/nXJ4GCR+UdKk9FEwcASfYkeu3HDWUld9uTE6pOc+ibWYnybNH7VBfEHW8h9YmQKs3HD2T3wlTcS2irU4CUW7/IKNok4etYdM3iFn1K2ReSGXEI='
+    "hacluster-nova":
+      charm: "cs:trusty/hacluster"
+      options:
+        corosync_key: |
+          'gel86qmEze8dYKYbfqIgRpqapJpKtdYL2hxC1y5nWYBPq7EMf6V8mF01IjeUkSRs14CUDrsPpT4PWeom7EOY2fleuLx/aIuqQUfEDkhf/gvaz7BaU4hrmTCoDBK7/HvEwY+/wu4qkEeckzSRPsm9MYzqnLRshh8yjZJ70xU/mmk='
+    "hacluster-neutron": 
+      charm: "cs:trusty/hacluster"
+      options:
+        corosync_key: |
+          'KNhb4++3jlllbnscS5D3qdzOJDsQPEeZ7zOLZJHbkKrRjX9gRCijVVOiv2JCvq03HqQ7LIufQzWGl9Za8qh0f6QmQ3XhFh/Cb/3WaYFj+tEf0zArWv+8miswmM1z4eyTSrTWBq0dTgx1z96wjBxP5HV0+1LWW+3Ei4oZWyRGeR0='
+    "hacluster-glance":
+      charm: "cs:trusty/hacluster"
+      options:
+        corosync_key: |
+          'el1dd8107J5mwQDPS7tEJPZrr0XFfL95+Tku/QG90W5Q5f5SP4W8TRfKvddGmZWZl2lVd1neG5WqaHa1mq/aScJpoflzVAJCvshN7Gd2AjHhLNNugeI8S90j/7wrKUhqiCAlkKaeri2xs5bB5PZ7Z9AHuNZL7SW1al8lxrKhUFI='
+    "rabbitmq-server": 
+      charm: "cs:trusty/rabbitmq-server"
+      num_units: 3
+      options: 
+        management_plugin: true
+      to:
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    "keystone": 
+      charm: "cs:trusty/keystone"
+      num_units: 3
+      options: 
+        "admin-password": openstack
+        "admin-token": admin
+        vip: 10.4.1.23
+      to:
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    "openstack-dashboard": 
+      charm: "cs:trusty/openstack-dashboard"
+      num_units: 3
+      options: 
+        secret: admin
+        vip: 10.4.1.21
+        webroot: /
+      to:
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    "nova-compute": 
+      branch: "lp:~openstack-charmers/charms/trusty/nova-compute/next"
+      num_units: 4
+      options: 
+        "enable-live-migration": true
+        "enable-resize": true
+        "migration-auth-type": ssh
+      to:
+        - "nodes-compute=0"
+#        - "nodes-compute=1"
+        - "nodes-api=0"
+        - "nodes-api=1"
+        - "nodes-api=2"
+    "nova-cloud-controller": 
+      charm: "cs:trusty/nova-cloud-controller"
+      num_units: 3
+      options: 
+        "console-access-protocol": novnc
+        "network-manager": Neutron
+        "quantum-security-groups": "yes"
+        "service-guard": true
+        vip: 10.4.1.26
+      to:
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    "neutron-api": 
+      branch: lp:~openstack-charmers/charms/trusty/neutron-api/next
+      num_units: 3
+      options:
+        neutron-security-groups: False
+        manage-neutron-plugin-legacy-mode: False
+        vip: 10.4.1.27
+      to: 
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    neutron-gateway:
+      branch: lp:~narindergupta/charms/trusty/neutron-gateway/ovs-odl
+#      num_units: 3
+#      constraints: tags=gateway
+      options:
+        "ext-port": "00:1e:67:cf:bb:53"
+        plugin: ovs-odl
+#        instance-mtu: 1400
+      to:  
+        - "nodes-api=0"
+    odl-controller:
+      branch: lp:~narindergupta/charms/trusty/odl-controller/liberty
+      options:
+        install-url: "https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.4-Helium-SR4/distribution-karaf-0.2.4-Helium-SR4.tar.gz"
+#        install-url: "https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.3.2-Lithium-SR2/distribution-karaf-0.3.2-Lithium-SR2.tar.gz"
+      to: lxc:nodes-api=1
+    "glance": 
+      charm: "cs:trusty/glance"
+      num_units: 3
+      options: 
+        vip: 10.4.1.22
+      to:
+        - "lxc:nodes-api=0"
+        - "lxc:nodes-api=1"
+        - "lxc:nodes-api=2"
+    neutron-api-odl:
+      branch: lp:~narindergupta/charms/trusty/neutron-api-odl/liberty
+      options:
+        overlay-network-type: 'vxlan gre'
+        security-groups: true
+    openvswitch-odl:
+      branch: lp:~openstack-charmers/charms/trusty/openvswitch-odl/trunk
+  relations:
+    - - "glance:ha"
+      - "hacluster-glance:ha"
+    - - "keystone:ha"
+      - "hacluster-keystone:ha"
+    - - "neutron-api:ha"
+      - "hacluster-neutron:ha"
+    - - "nova-cloud-controller:ha"
+      - "hacluster-nova:ha"
+    - - "openstack-dashboard:ha"
+      - "hacluster-horizon:ha"
+    - - "nova-compute:amqp"
+      - "rabbitmq-server:amqp"
+    - - "neutron-gateway:amqp"
+      - "rabbitmq-server:amqp"
+    - - "nova-cloud-controller:identity-service"
+      - "keystone:identity-service"
+    - - "glance:identity-service"
+      - "keystone:identity-service"
+    - - "neutron-api:identity-service"
+      - "keystone:identity-service"
+    - - "neutron-api:amqp"
+      - "rabbitmq-server:amqp"
+    - - "neutron-gateway:neutron-plugin-api"
+      - "neutron-api:neutron-plugin-api"
+    - - "glance:amqp"
+      - "rabbitmq-server:amqp"
+    - - "nova-cloud-controller:image-service"
+      - "glance:image-service"
+    - - "nova-compute:image-service"
+      - "glance:image-service"
+    - - "nova-cloud-controller:cloud-compute"
+      - "nova-compute:cloud-compute"
+    - - "nova-cloud-controller:amqp"
+      - "rabbitmq-server:amqp"
+    - - "nova-cloud-controller:quantum-network-service"
+      - "neutron-gateway:quantum-network-service"
+    - - "openstack-dashboard:identity-service"
+      - "keystone:identity-service"
+    - - "nova-cloud-controller:neutron-api"
+      - "neutron-api:neutron-api"
+    - - "neutron-gateway:shared-db"
+      - "percona-cluster:shared-db"
+    - - "glance:shared-db"
+      - "percona-cluster:shared-db"
+    - - "keystone:shared-db"
+      - "percona-cluster:shared-db"
+    - - "nova-cloud-controller:shared-db"
+      - "percona-cluster:shared-db"
+    - - "neutron-api:shared-db"
+      - "percona-cluster:shared-db"
+    - - "neutron-api:neutron-plugin-api-subordinate"
+      - "neutron-api-odl:neutron-plugin-api-subordinate"
+    - - "nova-compute:neutron-plugin"
+      - "openvswitch-odl:neutron-plugin"
+    - - "neutron-gateway"
+      - "openvswitch-odl"
+    - - "openvswitch-odl:ovsdb-manager"
+      - "odl-controller:ovsdb-manager"
+    - - "neutron-api-odl:odl-controller"
+      - "odl-controller:controller-api"
+trusty-liberty-nodes:
+  inherits: openstack-phase1
+  overrides:
+    series: trusty
+
+trusty-liberty:
+  inherits: openstack-phase2
+  overrides:
+    cluster_count: 3
+    os-data-network: 10.4.9.0/24
+    region: Canonical
+    source: "cloud:trusty-liberty"
+    "openstack-origin": "cloud:trusty-liberty"
+    series: trusty
+
+trusty-kilo-nodes:
+  inherits: openstack-phase1
+  overrides:
+    series: trusty
+
+trusty-kilo:
+  inherits: openstack-phase2
+  overrides:
+    cluster_count: 3
+    os-data-network: 10.4.9.0/24
+    region: Canonical
+    source: "cloud:trusty-kilo"
+    "openstack-origin": "cloud:trusty-kilo"
+    series: trusty
+
+
+trusty-juno-nodes:
+  inherits: openstack-phase1
+  overrides:
+    series: trusty
+
+trusty-juno:
+  inherits: openstack-phase2
+  overrides:
+    cluster_count: 3
+    os-data-network: 10.4.9.0/24
+    region: Canonical
+    source: "cloud:trusty-juno"
+    "openstack-origin": "cloud:trusty-juno"
+    series: trusty
+
+
diff --git a/ci/deployment.yaml b/ci/deployment.yaml
new file mode 100755 (executable)
index 0000000..46857c9
--- /dev/null
@@ -0,0 +1,208 @@
+# This file defines the deployment for the MAAS environment which is to be
+# deployed and automated.
+demo-maas:
+    maas:
+        # Defines the general setup for the MAAS environment, including the
+        # username and password for the host as well as the MAAS server.
+        user: ubuntu
+        password: ubuntu
+
+        # Contains the virtual machine parameters for creating the MAAS virtual
+        # server. Here you can configure the name of the virsh domain, the
+        # parameters for how the network is attached.
+        name: opnfv-maas-intel
+        interfaces: ['bridge=brAdm,model=virtio','bridge=brData,model=virtio','bridge=brPublic,model=virtio']
+        memory: 4096
+        vcpus: 4
+        arch: amd64
+        pool: default
+        disk_size: 160G
+
+        # Apt http proxy setting(s)
+        apt_http_proxy:
+
+        apt_sources:
+          - ppa:maas/stable
+          - ppa:juju/stable
+
+        # Virsh power settings
+        # Specifies the uri and keys to use for virsh power control of the 
+        # juju virtual machine. If the uri is omitted, the value for the
+        # --remote is used. If no power settings are desired, then do not
+        # supply the virsh block.
+        virsh:
+            rsa_priv_key: /home/ubuntu/.ssh/id_rsa
+            rsa_pub_key: /home/ubuntu/.ssh/id_rsa.pub
+            uri: qemu+ssh://ubuntu@10.4.1.1/system
+
+        # Defines the IP Address that the configuration script will use to
+        # to access the MAAS controller via SSH.
+        ip_address: 10.4.1.2
+
+        # This section allows the user to set a series of options on the
+        # MAAS server itself. The list of config options can be found in
+        # the upstream MAAS documentation:
+        #  - http://maas.ubuntu.com/docs/api.html#maas-server
+        settings:
+            main_archive: http://us.archive.ubuntu.com/ubuntu
+            upstream_dns: 10.4.0.2
+            maas_name: intelpod5
+            # kernel_opts: "console=tty0 console=ttyS1,115200n8"
+            # ntp_server: ntp.ubuntu.com
+
+        # This section is used to define the networking parameters for when
+        # the node first comes up. It is fed into the meta-data cloud-init
+        # configuration and is used to configure the networking piece of the
+        # service. The contents of this section are written directly to the
+        # /etc/network/interfaces file.
+        #
+        # Please note, this is slightly different than the
+        # node-group-interfaces section below. This will configure the
+        # machine's networking params, and the node-group-interfaces will
+        # configure the maas node-group interfaces which is used for
+        # controlling the dhcp, dns, etc.
+        network_config: |
+            auto lo
+            iface lo inet loopback
+
+            auto eth0
+            iface eth0 inet static
+            address 10.4.1.2
+            netmask 255.255.248.0
+            network 10.4.0.0
+            broadcast 10.4.7.255
+            gateway 10.4.0.1
+            dns-nameservers 10.4.0.2 127.0.0.1
+
+            auto eth1
+            iface eth1 inet static
+            address 10.4.9.2
+            netmask 255.255.248.0
+            network 10.4.8.0
+            broadcast 10.4.15.255
+
+            #auto lo
+            #iface lo inet loopback
+
+            #auto eth0
+            #iface eth0 inet static
+            #  address 192.168.122.2
+            #  netmask 255.255.248.0
+            #  network 192.168.122.0
+            #  broadcast 192.168.122.255
+            #  gateway 192.168.122.1
+            #  dns-nameservers 192.168.122.1 127.0.0.1
+
+        # The node-group-interfaces section is used to configure the MAAS
+        # network interfaces. Basic configuration is supported, such as which
+        # device should be bound, the range of IP addresses, etc.
+        # Note: this may contain the special identifiers:
+        #   ${maas_net} - the first 3 octets of the ipv4 address
+        #   ${maas_ip} - the ip address of the MAAS controller 
+        node_group_ifaces:
+            - device: eth0
+              ip: 10.4.1.2
+              subnet_mask: 255.255.248.0
+              broadcast_ip: 10.4.7.255
+              router_ip: 10.4.0.1
+              static_range:
+                  low: 10.4.2.20
+                  high: 10.4.2.254
+              dynamic_range:
+                  low: 10.4.1.50
+                  high: 10.4.1.254
+
+        # Defines the physical nodes which are added to the MAAS cluster
+        # controller upon startup of the node.
+        nodes:
+            - name: node5-compute
+              tags: compute
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:e0:0a:4a"
+                  - "00:1e:67:e0:0a:4b"
+                  - "00:1e:67:d0:9a:10"
+                  - "00:1e:67:d0:9a:11"
+              power:
+                  type: ipmi
+                  address: 10.4.7.5
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+                
+            - name: node4-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:e0:08:b0"
+                  - "00:1e:67:e0:08:b1"
+                  - "00:1e:67:d0:99:ee"
+                  - "00:1e:67:d0:99:ef"
+              power:
+                  type: ipmi
+                  address: 10.4.7.4
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+            - name: node3-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:e0:08:7e"
+                  - "00:1e:67:e0:08:7f"
+                  - "00:1e:67:c2:23:d8"
+                  - "00:1e:67:c2:23:d9"
+              power:
+                  type: ipmi
+                  address: 10.4.7.3
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+            - name: node2-control
+              tags: control
+              architecture: amd64/generic
+              mac_addresses:
+                  - "00:1e:67:cf:b8:92"
+                  - "00:1e:67:cf:b8:93"
+                  - "00:1e:67:d0:9b:0c"
+                  - "00:1e:67:d0:9b:0d"
+              power:
+                  type: ipmi
+                  address: 10.4.7.2
+                  user: root
+                  pass: root
+                  driver: LAN_2_0
+#              sticky_ip_address:
+#                  mac_address: "38:63:bb:43:b8:9c"
+#                  requested_address: 192.168.122.5
+
+#            - name: jenkins-slave
+#              tags: jenkins-slave
+#              architecture: amd64/generic
+#              mac_addresses:
+#                  - "52:54:00:f0:5c:53"
+#              power:
+#                  type: virsh
+#                  address: qemu+ssh://ubuntu@10.4.1.1/system
+
+    # Contains the virtual machine parameters for creating the Juju bootstrap
+    # node virtual machine
+    juju-bootstrap:
+        name: bootstrap
+        interfaces: ['bridge=brAdm,model=virtio']
+        memory: 4096
+        vcpus: 4
+        arch: amd64
+        pool: default
+        disk_size: 120G
index a44d7a4..bacf6aa 100755 (executable)
@@ -11,9 +11,9 @@ demo-maas:
         # server. Here you can configure the name of the virsh domain, the
         # parameters for how the network is attached.
         name: opnfv-maas-intel
-        interfaces: ['bridge=br0,model=virtio']
+        interfaces: ['bridge=brAdm,model=virtio','bridge=brData,model=virtio','bridge=brPublic,model=virtio']
         memory: 4096
-        vcpus: 2
+        vcpus: 4
         arch: amd64
         pool: default
         disk_size: 160G
@@ -74,6 +74,19 @@ demo-maas:
             gateway 10.4.0.1
             dns-nameservers 10.4.0.2 127.0.0.1
 
+            auto eth1
+            iface eth1 inet static
+            address 10.4.9.2
+            netmask 255.255.248.0
+            network 10.4.8.0
+            broadcast 10.4.15.255
+
+            auto eth2
+            iface eth2 inet static
+            address 10.2.65.3
+            netmask 255.255.255.0
+            network 10.2.65.0
+            broadcast 10.2.65.255
             #auto lo
             #iface lo inet loopback
 
@@ -104,7 +117,28 @@ demo-maas:
               dynamic_range:
                   low: 10.4.1.50
                   high: 10.4.1.254
-
+            - device: eth1
+              ip: 10.4.9.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.4.9.255
+              management: 1
+              static_range:
+                  low: 10.4.9.20
+                  high: 10.4.9.100
+              dynamic_range:
+                  low: 10.4.9.101
+                  high: 10.4.9.200
+            - device: eth2
+              ip: 10.2.65.3
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.2.65.255
+              management: 1
+              static_range:
+                  low: 10.2.65.20
+                  high: 10.2.65.100
+              dynamic_range:
+                  low: 10.2.65.101
+                  high: 10.2.65.200
         # Defines the physical nodes which are added to the MAAS cluster
         # controller upon startup of the node.
         nodes:
@@ -193,9 +227,9 @@ demo-maas:
     # node virtual machine
     juju-bootstrap:
         name: bootstrap
-        interfaces: ['bridge=br0,model=virtio']
+        interfaces: ['bridge=brAdm,model=virtio','bridge=brData,model=virtio','bridge=brPublic,model=virtio']
         memory: 4096
-        vcpus: 2
+        vcpus: 4
         arch: amd64
         pool: default
         disk_size: 120G
diff --git a/ci/maas/intel/pod5/environment.yaml b/ci/maas/intel/pod5/environment.yaml
deleted file mode 100644 (file)
index e5b539c..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-default: demo-maas
-environments:
-    # https://juju.ubuntu.com/docs/config-maas.html
-    maas:
-        type: maas
-
-        # maas-server specifies the location of the MAAS server. It must
-        # specify the base path.
-        #
-        maas-server: 'http://10.4.1.1/MAAS/'
-
-        # maas-oauth holds the OAuth credentials from MAAS.
-        #
-        maas-oauth: 'c6tcQz4tyS3ALajCtF:sqcWhw8MkxTjUDLZrm:hBhszBLv5EqrY8h6yktFXWUT5825ShvE'
-
-        # maas-server bootstrap ssh connection options
-        #
-
-        # bootstrap-timeout time to wait contacting a state server, in seconds.
-        bootstrap-timeout: 1800
-        admin-secret: admin
-
-        # Whether or not to refresh the list of available updates for an
-        # OS. The default option of true is recommended for use in
-        # production systems, but disabling this can speed up local
-        # deployments for development or testing.
-        #
-        enable-os-refresh-update: false
-
-        # Whether or not to perform OS upgrades when machines are
-        # provisioned. The default option of true is recommended for use
-        # in production systems, but disabling this can speed up local
-        # deployments for development or testing.
-        #
-        enable-os-upgrade: false
-
diff --git a/ci/maas/intel/pod5/interfaces.host b/ci/maas/intel/pod5/interfaces.host
new file mode 100644 (file)
index 0000000..9377814
--- /dev/null
@@ -0,0 +1,36 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+auto eth2
+iface eth2 inet manual
+
+auto eth2.721
+iface eth2.721 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth2.721
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
+# The public network interface
+auto eth2.724
+iface eth2.724 inet manual
+
+auto brPublic
+iface brPublic inet dhcp
+        bridge_ports eth2.724
+        bridge_stp off
+        bridge_fd 0
+        bridge_maxwait 0
+
diff --git a/ci/maas/intel/pod5/lxc-add-more-interfaces b/ci/maas/intel/pod5/lxc-add-more-interfaces
new file mode 100755 (executable)
index 0000000..c9bca9f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brPublic
+lxc.network.name = eth2
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+
+  auto eth2
+  iface eth2 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
index 74c1a00..523f3dd 100755 (executable)
@@ -13,7 +13,7 @@ demo-maas:
         name: opnfv-maas-intel
         interfaces: ['bridge=brAdm,model=virtio', 'bridge=brData,model=virtio', 'bridge=brPublic,model=virtio']
         memory: 4096
-        vcpus: 2
+        vcpus: 4
         arch: amd64
         pool: default
         disk_size: 160G
@@ -79,10 +79,10 @@ demo-maas:
             address 10.4.9.2
             netmask 255.255.248.0
 
-#            auto eth2
-#            iface eth2 inet static
-#            address 10.2.66.3
-#            netmask 255.255.255.0
+            auto eth2
+            iface eth2 inet static
+            address 10.2.66.3
+            netmask 255.255.255.0
 
             #auto lo
             #iface lo inet loopback
@@ -114,26 +114,28 @@ demo-maas:
               dynamic_range:
                   low: 10.4.1.50
                   high: 10.4.1.254
-#            - device: eth1
-#              ip: 10.4.9.2
-#              subnet_mask: 255.255.248.0
-#              broadcast_ip: 10.4.15.255
-#              static_range:
-#                  low: 10.4.9.20
-#                  high: 10.4.9.150
-#              dynamic_range:
-#                  low: 10.4.9.151
-#                  high: 10.4.9.200
-#            - device: eth2
-#              ip: 10.2.66.3
-#              subnet_mask: 255.255.255.0
-#              broadcast_ip: 10.2.66.255
-#              static_range:
-#                  low: 10.2.66.20
-#                  high: 10.2.66.150
-#              dynamic_range:
-#                  low: 10.2.66.151
-#                  high: 10.2.66.200
+            - device: eth1
+              ip: 10.4.9.2
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.4.9.255
+              management: 1
+              static_range:
+                  low: 10.4.9.20
+                  high: 10.4.9.150
+              dynamic_range:
+                  low: 10.4.9.151
+                  high: 10.4.9.200
+            - device: eth2
+              ip: 10.2.66.3
+              subnet_mask: 255.255.255.0
+              broadcast_ip: 10.2.66.255
+              management: 1
+              static_range:
+                  low: 10.2.66.20
+                  high: 10.2.66.150
+              dynamic_range:
+                  low: 10.2.66.151
+                  high: 10.2.66.200
 
         # Defines the physical nodes which are added to the MAAS cluster
         # controller upon startup of the node.
@@ -243,7 +245,7 @@ demo-maas:
         name: bootstrap
         interfaces: ['bridge=brAdm,model=virtio', 'bridge=brData,model=virtio', 'bridge=brPublic,model=virtio']
         memory: 4096
-        vcpus: 2
+        vcpus: 4
         arch: amd64
         pool: default
         disk_size: 120G
diff --git a/ci/maas/intel/pod6/interfaces.host b/ci/maas/intel/pod6/interfaces.host
new file mode 100644 (file)
index 0000000..86cdd05
--- /dev/null
@@ -0,0 +1,33 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+auto eth1
+iface eth1 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth1
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
+# The public network interface
+auto eth2
+iface eth2 inet manual
+
+auto brPublic
+iface brPublic inet dhcp
+        bridge_ports eth2
+        bridge_stp off
+        bridge_fd 0
+        bridge_maxwait 0
+
diff --git a/ci/maas/intel/pod6/lxc-add-more-interfaces b/ci/maas/intel/pod6/lxc-add-more-interfaces
new file mode 100755 (executable)
index 0000000..c9bca9f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brPublic
+lxc.network.name = eth2
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+
+  auto eth2
+  iface eth2 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
diff --git a/ci/maas/orange/pod2/compute-interfaces.host b/ci/maas/orange/pod2/compute-interfaces.host
new file mode 100644 (file)
index 0000000..28c22fe
--- /dev/null
@@ -0,0 +1,23 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+#data network for VM on openstack
+auto eth5
+iface eth5 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth5
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
diff --git a/ci/maas/orange/pod2/control-interfaces.host b/ci/maas/orange/pod2/control-interfaces.host
new file mode 100644 (file)
index 0000000..ba8b29c
--- /dev/null
@@ -0,0 +1,23 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+#data network for VM on openstack
+auto eth3
+iface eth3 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth3
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
index 86a3c14..9541a00 100755 (executable)
@@ -122,6 +122,7 @@ demo-maas:
               ip: 192.168.12.5
               subnet_mask: 255.255.255.0
               broadcast_ip: 192.168.12.255
+              management: 1
               static_range:
                   low: 192.168.12.50
                   high: 192.168.12.150
@@ -132,6 +133,7 @@ demo-maas:
               ip: 192.168.22.5
               subnet_mask: 255.255.255.0
               broadcast_ip: 192.168.22.255
+              management: 1
               static_range:
                   low: 192.168.22.50
                   high: 192.168.22.150
diff --git a/ci/maas/orange/pod2/interfaces.host b/ci/maas/orange/pod2/interfaces.host
new file mode 100644 (file)
index 0000000..9377814
--- /dev/null
@@ -0,0 +1,36 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+auto eth2
+iface eth2 inet manual
+
+auto eth2.721
+iface eth2.721 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth2.721
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
+# The public network interface
+auto eth2.724
+iface eth2.724 inet manual
+
+auto brPublic
+iface brPublic inet dhcp
+        bridge_ports eth2.724
+        bridge_stp off
+        bridge_fd 0
+        bridge_maxwait 0
+
diff --git a/ci/maas/orange/pod2/lxc-add-more-interfaces b/ci/maas/orange/pod2/lxc-add-more-interfaces
new file mode 100755 (executable)
index 0000000..a22901a
--- /dev/null
@@ -0,0 +1,43 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
index 4fdfe80..fee0a51 100755 (executable)
@@ -19,39 +19,49 @@ esac
 
 case "$3" in
     'orangepod2' )
+        cp maas/orange/pod2/control-interfaces.host trusty/ubuntu-nodes-controller/network/interfaces.host
+        cp maas/orange/pod2/lxc-add-more-interfaces trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
+        cp maas/orange/pod2/compute-interfaces.host trusty/ubuntu-nodes-compute/network/interfaces.host
+        cp maas/orange/pod2/lxc-add-more-interfaces trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
         sed -i -- 's/10.4.1.1/192.168.2.2/g' ./bundles.yaml
+        sed -i -- 's/#os-data-network: 10.4.8.0\/21/os-data-network: 192.168.12.0\/24/g' ./bundles.yaml
         ;;
     'intelpod6' )
+        cp maas/intel/pod6/interfaces.host trusty/ubuntu-nodes-controller/network/interfaces.host
+        cp maas/intel/pod6/lxc-add-more-interfaces trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
+        cp maas/intel/pod6/interfaces.host trusty/ubuntu-nodes-compute/network/interfaces.host
+        cp maas/intel/pod6/lxc-add-more-interfaces trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
         sed -i -- 's/10.4.1.1/10.4.1.2/g' ./bundles.yaml
-        sed -i -- 's/#os-data-network/os-data-network/g' ./bundles.yaml
+        sed -i -- 's/#os-data-network: 10.4.8.0\/21/os-data-network: 10.4.9.0\/24/g' ./bundles.yaml
         ;;
     'intelpod5' )
+        cp maas/intel/pod5/interfaces.host trusty/ubuntu-nodes-controller/network/interfaces.host
+        cp maas/intel/pod5/lxc-add-more-interfaces trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
+        cp maas/intel/pod5/interfaces.host trusty/ubuntu-nodes-compute/network/interfaces.host
+        cp maas/intel/pod5/lxc-add-more-interfaces trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
         sed -i -- 's/10.4.1.1/10.4.1.2/g' ./bundles.yaml
-        sed -i -- 's/#os-data-network/os-data-network/g' ./bundles.yaml
+        sed -i -- 's/#os-data-network: 10.4.8.0\/21/os-data-network: 10.4.9.0\/24/g' ./bundles.yaml
         ;;
 esac
 
 echo "... Deployment Started ...."
 case "$1" in
+    'nonha' )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
     'ha' )
         juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
-        case "$3" in
-            'orangepod2' )
-                juju run --service nodes-api 'sudo ifup eth3'
-                juju run --service nodes-compute 'sudo ifup eth5'
-            ;;
-            'intelpod6' )
-                juju run --service nodes-api 'sudo ifup eth1'
-                juju run --service nodes-compute 'sudo ifup eth1'
-            ;;
-            'intelpod5' )
-                juju run --service nodes-api 'sudo ifup eth1'
-                juju run --service nodes-compute 'sudo ifup eth1'
-            ;;
-        esac
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
+    'tip' )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
+        ;;
+    * )
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"-nodes
+        juju-deployer -vW -d -c bundles.yaml trusty-"$2"
         ;;
 esac
 
-juju-deployer -vW -d -c bundles.yaml trusty-"$2"
-
 echo "... Deployment finished ...."
index 35372d6..27a10d6 100644 (file)
@@ -3,11 +3,11 @@ openstack-phase1:
   series: trusty
   services:
     nodes-api:
-      branch: "lp:charms/trusty/ubuntu"
+      charm: "local:trusty/ubuntu-nodes-controller"
       num_units: 3
       constraints: tags=control
     nodes-compute:
-      branch: "lp:charms/trusty/ubuntu"
+      charm: "local:trusty/ubuntu-nodes-compute"
       num_units: 1
       constraints: tags=compute
     "ntp": 
@@ -132,7 +132,7 @@ openstack-phase2:
 #      num_units: 3
 #      constraints: tags=gateway
       options:
-#        "ext-port": eth1
+#        "ext-port": "eth1"
         plugin: ovs-odl
 #        instance-mtu: 1400
       to:  
@@ -141,9 +141,9 @@ openstack-phase2:
       branch: lp:~narindergupta/charms/trusty/odl-controller/liberty
       options:
         install-url: "https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.2.4-Helium-SR4/distribution-karaf-0.2.4-Helium-SR4.tar.gz"
-     # to: lxc:nodes-api=1
+#        install-url: "https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.3.2-Lithium-SR2/distribution-karaf-0.3.2-Lithium-SR2.tar.gz"
       to: 
-        - "nodes-api=0"
+        - "lxc:nodes-api=1"
     "glance": 
       charm: "cs:trusty/glance"
       num_units: 3
diff --git a/ci/trusty/ubuntu-nodes-compute/README b/ci/trusty/ubuntu-nodes-compute/README
new file mode 100644 (file)
index 0000000..1a73633
--- /dev/null
@@ -0,0 +1,3 @@
+You need to edit:
+ * network/interfaces.host
+ * lxc/add-more-interfaces
diff --git a/ci/trusty/ubuntu-nodes-compute/copyright b/ci/trusty/ubuntu-nodes-compute/copyright
new file mode 100644 (file)
index 0000000..43e04d4
--- /dev/null
@@ -0,0 +1,17 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+Copyright: Copyright 2012, Canonical Ltd., All Rights Reserved.
+License: GPL-3
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/ci/trusty/ubuntu-nodes-compute/hooks/install b/ci/trusty/ubuntu-nodes-compute/hooks/install
new file mode 100755 (executable)
index 0000000..17265f5
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+set -e
+set -u
+
+## install lxc pre-configuration to setup multiple interfaces
+status-set maintenance "setting up lxc clone hook" || true
+mkdir -p /usr/local/share/lxc/hooks/
+install -m 755 lxc/add-more-interfaces /usr/local/share/lxc/hooks/
+
+dpkg-divert --local \
+    --divert /usr/share/lxc/config/ubuntu-cloud.trusty.conf.ubuntu.orig \
+    --add /usr/share/lxc/config/ubuntu-cloud.trusty.conf
+mkdir -p /usr/share/lxc/config/
+install -m 644 lxc/ubuntu-cloud.trusty.conf /usr/share/lxc/config/
+
+## network interfaces
+status-set maintenance "setting up network interfaces" || true
+apt-get update || true
+apt-get install -y ifenslave ethtool bridge-utils vlan
+
+if ! grep -q 8021q /etc/modules; then
+    echo 8021q >> /etc/modules
+fi
+
+## write /etc/network/interfaces for the host
+install -m 644 network/interfaces.host /etc/network/interfaces
+ifup -a
+
+status-set active || true
diff --git a/ci/trusty/ubuntu-nodes-compute/icon.svg b/ci/trusty/ubuntu-nodes-compute/icon.svg
new file mode 100644 (file)
index 0000000..a5576ed
--- /dev/null
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="96"
+   height="96"
+   id="svg6517"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="icon.svg">
+  <defs
+     id="defs6519">
+    <linearGradient
+       id="Background">
+      <stop
+         id="stop4178"
+         offset="0"
+         style="stop-color:#b8b8b8;stop-opacity:1" />
+      <stop
+         id="stop4180"
+         offset="1"
+         style="stop-color:#c9c9c9;stop-opacity:1" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Inner Shadow"
+       id="filter1121">
+      <feFlood
+         flood-opacity="0.59999999999999998"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood1123" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="out"
+         result="composite1"
+         id="feComposite1125" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur1127" />
+      <feOffset
+         dx="0"
+         dy="2"
+         result="offset"
+         id="feOffset1129" />
+      <feComposite
+         in="offset"
+         in2="SourceGraphic"
+         operator="atop"
+         result="composite2"
+         id="feComposite1131" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter950">
+      <feFlood
+         flood-opacity="0.25"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood952" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite954" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur956" />
+      <feOffset
+         dx="0"
+         dy="1"
+         result="offset"
+         id="feOffset958" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite960" />
+    </filter>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath873">
+      <g
+         transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
+         id="g875"
+         inkscape:label="Layer 1"
+         style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
+        <path
+           style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
+           d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
+           id="path877"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="sssssssss" />
+      </g>
+    </clipPath>
+    <filter
+       inkscape:collect="always"
+       id="filter891"
+       inkscape:label="Badge Shadow">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.71999962"
+         id="feGaussianBlur893" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.0745362"
+     inkscape:cx="-28.607257"
+     inkscape:cy="88.286442"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="1026"
+     inkscape:window-x="1920"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     showborder="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:showpageshadow="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid821" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="16,48"
+       id="guide823" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="64,80"
+       id="guide825" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="80,40"
+       id="guide827" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="64,16"
+       id="guide829" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata6522">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="BACKGROUND"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(268,-635.29076)"
+     style="display:inline">
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
+       d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
+       id="path6455"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sssssssss" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="PLACE YOUR PICTOGRAM HERE"
+     style="display:inline">
+    <path
+       style="fill:#dd4814"
+       inkscape:connector-curvature="0"
+       d="m 80.02465,48.074075 c 0,17.686843 -14.339141,32.025811 -32.0271,32.025811 -17.687958,0 -32.026421,-14.338743 -32.026421,-32.025811 0,-17.688199 14.338241,-32.026715 32.026195,-32.026715 17.68796,0 32.027326,14.338516 32.027326,32.026715 z"
+       id="path4010" />
+    <path
+       style="fill:#ffffff"
+       inkscape:connector-curvature="0"
+       d="m 26.220054,43.798393 c -2.362021,0 -4.275962,1.913911 -4.275962,4.275907 0,2.361093 1.913941,4.275231 4.275962,4.275231 2.361119,0 4.275282,-1.914138 4.275282,-4.275231 0,-2.362222 -1.913941,-4.275907 -4.275282,-4.275907 z m 30.529623,19.433315 c -2.045225,1.18066 -2.745267,3.794605 -1.565046,5.838898 1.1809,2.045195 3.794652,2.745681 5.839872,1.565023 2.044543,-1.180434 2.74504,-3.79438 1.564365,-5.839349 -1.180448,-2.044293 -3.794653,-2.745006 -5.839191,-1.564572 z M 35.507719,48.073623 c 0,-4.225745 2.099906,-7.958209 5.311109,-10.218297 l -3.126015,-5.236253 c -3.742,2.500061 -6.52546,6.322008 -7.681724,10.798345 1.350601,1.100895 2.213568,2.777317 2.213568,4.656657 0,1.878886 -0.862967,3.55531 -2.21379,4.655978 1.156042,4.47679 3.93971,8.298736 7.681724,10.798571 L 40.818828,58.29192 C 37.607625,56.032284 35.507719,52.300044 35.507719,48.073623 z M 47.998001,35.583488 c 6.525227,0 11.877689,5.003059 12.438766,11.382461 l 6.093858,-0.08903 c -0.29986,-4.709984 -2.357282,-8.939569 -5.519227,-12.048149 -1.625601,0.614168 -3.503606,0.521072 -5.126722,-0.416225 -1.625149,-0.938201 -2.644935,-2.52085 -2.924231,-4.238398 -1.579953,-0.437239 -3.242841,-0.67563 -4.962218,-0.67563 -2.956999,0 -5.750608,0.694159 -8.232178,1.9234 l 2.970551,5.323701 c 1.599166,-0.744098 3.381133,-1.162131 5.261401,-1.162131 z m 0,24.980495 c -1.88049,0 -3.662235,-0.418033 -5.261623,-1.162131 l -2.971009,5.324152 c 2.481792,1.22879 5.275637,1.923176 8.232632,1.923176 1.719377,0 3.382263,-0.238391 4.962444,-0.67563 0.279296,-1.71755 1.299306,-3.300198 2.924683,-4.239076 1.623114,-0.936846 3.501122,-1.029942 5.126723,-0.415548 3.16172,-3.108806 5.219142,-7.338391 5.518545,-12.048375 l -6.093857,-0.08903 c -0.560621,6.380306 -5.913311,11.382461 -12.438538,11.382461 z m 8.750994,-27.648671 c 2.044997,1.18111 4.6592,0.480398 5.83942,-1.563894 1.1809,-2.045197 0.480858,-4.659142 -1.564362,-5.840027 -2.04477,-1.180434 -4.658747,-0.479947 -5.839647,1.565249 -1.180448,2.044291 -0.479954,4.658463 1.564589,5.838672 z"
+       id="path4012" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="BADGE"
+     style="display:none"
+     sodipodi:insensitive="true">
+    <g
+       style="display:inline"
+       transform="translate(-340.00001,-581)"
+       id="g4394"
+       clip-path="none">
+      <g
+         id="g855">
+        <g
+           inkscape:groupmode="maskhelper"
+           id="g870"
+           clip-path="url(#clipPath873)"
+           style="opacity:0.6;filter:url(#filter891)">
+          <path
+             transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             sodipodi:ry="12"
+             sodipodi:rx="12"
+             sodipodi:cy="552.36218"
+             sodipodi:cx="252"
+             id="path844"
+             style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             sodipodi:type="arc" />
+        </g>
+        <g
+           id="g862">
+          <path
+             sodipodi:type="arc"
+             style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             id="path4398"
+             sodipodi:cx="252"
+             sodipodi:cy="552.36218"
+             sodipodi:rx="12"
+             sodipodi:ry="12"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
+          <path
+             transform="matrix(1.25,0,0,1.25,33,-100.45273)"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             sodipodi:ry="12"
+             sodipodi:rx="12"
+             sodipodi:cy="552.36218"
+             sodipodi:cx="252"
+             id="path4400"
+             style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             sodipodi:type="arc" />
+          <path
+             sodipodi:type="star"
+             style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             id="path4459"
+             sodipodi:sides="5"
+             sodipodi:cx="666.19574"
+             sodipodi:cy="589.50385"
+             sodipodi:r1="7.2431178"
+             sodipodi:r2="4.3458705"
+             sodipodi:arg1="1.0471976"
+             sodipodi:arg2="1.6755161"
+             inkscape:flatsided="false"
+             inkscape:rounded="0.1"
+             inkscape:randomized="0"
+             d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
+             transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/ci/trusty/ubuntu-nodes-compute/lxc/add-more-interface b/ci/trusty/ubuntu-nodes-compute/lxc/add-more-interface
new file mode 100755 (executable)
index 0000000..c9bca9f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brPublic
+lxc.network.name = eth2
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+
+  auto eth2
+  iface eth2 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
diff --git a/ci/trusty/ubuntu-nodes-compute/lxc/add-more-interfaces b/ci/trusty/ubuntu-nodes-compute/lxc/add-more-interfaces
new file mode 100755 (executable)
index 0000000..c9bca9f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brPublic
+lxc.network.name = eth2
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+
+  auto eth2
+  iface eth2 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
diff --git a/ci/trusty/ubuntu-nodes-compute/lxc/ubuntu-cloud.trusty.conf b/ci/trusty/ubuntu-nodes-compute/lxc/ubuntu-cloud.trusty.conf
new file mode 100644 (file)
index 0000000..b7636b5
--- /dev/null
@@ -0,0 +1,2 @@
+## added by juju charm
+lxc.hook.clone = /usr/local/share/lxc/hooks/add-more-interfaces
diff --git a/ci/trusty/ubuntu-nodes-compute/metadata.yaml b/ci/trusty/ubuntu-nodes-compute/metadata.yaml
new file mode 100644 (file)
index 0000000..8a57c08
--- /dev/null
@@ -0,0 +1,7 @@
+name: ubuntu-nodes-controller
+summary: A pristine Ubuntu Server
+maintainer: Charmers <juju@lists.ubuntu.com>
+description: |
+  This simply deploys Ubuntu Server.
+tags:
+     - misc
diff --git a/ci/trusty/ubuntu-nodes-compute/network/interfaces.host b/ci/trusty/ubuntu-nodes-compute/network/interfaces.host
new file mode 100644 (file)
index 0000000..9377814
--- /dev/null
@@ -0,0 +1,36 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+auto eth2
+iface eth2 inet manual
+
+auto eth2.721
+iface eth2.721 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth2.721
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
+# The public network interface
+auto eth2.724
+iface eth2.724 inet manual
+
+auto brPublic
+iface brPublic inet dhcp
+        bridge_ports eth2.724
+        bridge_stp off
+        bridge_fd 0
+        bridge_maxwait 0
+
diff --git a/ci/trusty/ubuntu-nodes-compute/revision b/ci/trusty/ubuntu-nodes-compute/revision
new file mode 100644 (file)
index 0000000..d00491f
--- /dev/null
@@ -0,0 +1 @@
+1
diff --git a/ci/trusty/ubuntu-nodes-controller/README b/ci/trusty/ubuntu-nodes-controller/README
new file mode 100644 (file)
index 0000000..1a73633
--- /dev/null
@@ -0,0 +1,3 @@
+You need to edit:
+ * network/interfaces.host
+ * lxc/add-more-interfaces
diff --git a/ci/trusty/ubuntu-nodes-controller/copyright b/ci/trusty/ubuntu-nodes-controller/copyright
new file mode 100644 (file)
index 0000000..43e04d4
--- /dev/null
@@ -0,0 +1,17 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+
+Files: *
+Copyright: Copyright 2012, Canonical Ltd., All Rights Reserved.
+License: GPL-3
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License
+ along with this program.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/ci/trusty/ubuntu-nodes-controller/hooks/install b/ci/trusty/ubuntu-nodes-controller/hooks/install
new file mode 100755 (executable)
index 0000000..17265f5
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+set -e
+set -u
+
+## install lxc pre-configuration to setup multiple interfaces
+status-set maintenance "setting up lxc clone hook" || true
+mkdir -p /usr/local/share/lxc/hooks/
+install -m 755 lxc/add-more-interfaces /usr/local/share/lxc/hooks/
+
+dpkg-divert --local \
+    --divert /usr/share/lxc/config/ubuntu-cloud.trusty.conf.ubuntu.orig \
+    --add /usr/share/lxc/config/ubuntu-cloud.trusty.conf
+mkdir -p /usr/share/lxc/config/
+install -m 644 lxc/ubuntu-cloud.trusty.conf /usr/share/lxc/config/
+
+## network interfaces
+status-set maintenance "setting up network interfaces" || true
+apt-get update || true
+apt-get install -y ifenslave ethtool bridge-utils vlan
+
+if ! grep -q 8021q /etc/modules; then
+    echo 8021q >> /etc/modules
+fi
+
+## write /etc/network/interfaces for the host
+install -m 644 network/interfaces.host /etc/network/interfaces
+ifup -a
+
+status-set active || true
diff --git a/ci/trusty/ubuntu-nodes-controller/icon.svg b/ci/trusty/ubuntu-nodes-controller/icon.svg
new file mode 100644 (file)
index 0000000..a5576ed
--- /dev/null
@@ -0,0 +1,279 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="96"
+   height="96"
+   id="svg6517"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="icon.svg">
+  <defs
+     id="defs6519">
+    <linearGradient
+       id="Background">
+      <stop
+         id="stop4178"
+         offset="0"
+         style="stop-color:#b8b8b8;stop-opacity:1" />
+      <stop
+         id="stop4180"
+         offset="1"
+         style="stop-color:#c9c9c9;stop-opacity:1" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Inner Shadow"
+       id="filter1121">
+      <feFlood
+         flood-opacity="0.59999999999999998"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood1123" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="out"
+         result="composite1"
+         id="feComposite1125" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur1127" />
+      <feOffset
+         dx="0"
+         dy="2"
+         result="offset"
+         id="feOffset1129" />
+      <feComposite
+         in="offset"
+         in2="SourceGraphic"
+         operator="atop"
+         result="composite2"
+         id="feComposite1131" />
+    </filter>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter950">
+      <feFlood
+         flood-opacity="0.25"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood952" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite954" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="1"
+         result="blur"
+         id="feGaussianBlur956" />
+      <feOffset
+         dx="0"
+         dy="1"
+         result="offset"
+         id="feOffset958" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="composite2"
+         id="feComposite960" />
+    </filter>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath873">
+      <g
+         transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
+         id="g875"
+         inkscape:label="Layer 1"
+         style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
+        <path
+           style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
+           d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
+           id="path877"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="sssssssss" />
+      </g>
+    </clipPath>
+    <filter
+       inkscape:collect="always"
+       id="filter891"
+       inkscape:label="Badge Shadow">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.71999962"
+         id="feGaussianBlur893" />
+    </filter>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.0745362"
+     inkscape:cx="-28.607257"
+     inkscape:cy="88.286442"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="true"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1680"
+     inkscape:window-height="1026"
+     inkscape:window-x="1920"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     showborder="true"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:showpageshadow="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid821" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="16,48"
+       id="guide823" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="64,80"
+       id="guide825" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="80,40"
+       id="guide827" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="64,16"
+       id="guide829" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata6522">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="BACKGROUND"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(268,-635.29076)"
+     style="display:inline">
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
+       d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
+       id="path6455"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="sssssssss" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="PLACE YOUR PICTOGRAM HERE"
+     style="display:inline">
+    <path
+       style="fill:#dd4814"
+       inkscape:connector-curvature="0"
+       d="m 80.02465,48.074075 c 0,17.686843 -14.339141,32.025811 -32.0271,32.025811 -17.687958,0 -32.026421,-14.338743 -32.026421,-32.025811 0,-17.688199 14.338241,-32.026715 32.026195,-32.026715 17.68796,0 32.027326,14.338516 32.027326,32.026715 z"
+       id="path4010" />
+    <path
+       style="fill:#ffffff"
+       inkscape:connector-curvature="0"
+       d="m 26.220054,43.798393 c -2.362021,0 -4.275962,1.913911 -4.275962,4.275907 0,2.361093 1.913941,4.275231 4.275962,4.275231 2.361119,0 4.275282,-1.914138 4.275282,-4.275231 0,-2.362222 -1.913941,-4.275907 -4.275282,-4.275907 z m 30.529623,19.433315 c -2.045225,1.18066 -2.745267,3.794605 -1.565046,5.838898 1.1809,2.045195 3.794652,2.745681 5.839872,1.565023 2.044543,-1.180434 2.74504,-3.79438 1.564365,-5.839349 -1.180448,-2.044293 -3.794653,-2.745006 -5.839191,-1.564572 z M 35.507719,48.073623 c 0,-4.225745 2.099906,-7.958209 5.311109,-10.218297 l -3.126015,-5.236253 c -3.742,2.500061 -6.52546,6.322008 -7.681724,10.798345 1.350601,1.100895 2.213568,2.777317 2.213568,4.656657 0,1.878886 -0.862967,3.55531 -2.21379,4.655978 1.156042,4.47679 3.93971,8.298736 7.681724,10.798571 L 40.818828,58.29192 C 37.607625,56.032284 35.507719,52.300044 35.507719,48.073623 z M 47.998001,35.583488 c 6.525227,0 11.877689,5.003059 12.438766,11.382461 l 6.093858,-0.08903 c -0.29986,-4.709984 -2.357282,-8.939569 -5.519227,-12.048149 -1.625601,0.614168 -3.503606,0.521072 -5.126722,-0.416225 -1.625149,-0.938201 -2.644935,-2.52085 -2.924231,-4.238398 -1.579953,-0.437239 -3.242841,-0.67563 -4.962218,-0.67563 -2.956999,0 -5.750608,0.694159 -8.232178,1.9234 l 2.970551,5.323701 c 1.599166,-0.744098 3.381133,-1.162131 5.261401,-1.162131 z m 0,24.980495 c -1.88049,0 -3.662235,-0.418033 -5.261623,-1.162131 l -2.971009,5.324152 c 2.481792,1.22879 5.275637,1.923176 8.232632,1.923176 1.719377,0 3.382263,-0.238391 4.962444,-0.67563 0.279296,-1.71755 1.299306,-3.300198 2.924683,-4.239076 1.623114,-0.936846 3.501122,-1.029942 5.126723,-0.415548 3.16172,-3.108806 5.219142,-7.338391 5.518545,-12.048375 l -6.093857,-0.08903 c -0.560621,6.380306 -5.913311,11.382461 -12.438538,11.382461 z m 8.750994,-27.648671 c 2.044997,1.18111 4.6592,0.480398 5.83942,-1.563894 1.1809,-2.045197 0.480858,-4.659142 -1.564362,-5.840027 -2.04477,-1.180434 -4.658747,-0.479947 -5.839647,1.565249 -1.180448,2.044291 -0.479954,4.658463 1.564589,5.838672 z"
+       id="path4012" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="BADGE"
+     style="display:none"
+     sodipodi:insensitive="true">
+    <g
+       style="display:inline"
+       transform="translate(-340.00001,-581)"
+       id="g4394"
+       clip-path="none">
+      <g
+         id="g855">
+        <g
+           inkscape:groupmode="maskhelper"
+           id="g870"
+           clip-path="url(#clipPath873)"
+           style="opacity:0.6;filter:url(#filter891)">
+          <path
+             transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             sodipodi:ry="12"
+             sodipodi:rx="12"
+             sodipodi:cy="552.36218"
+             sodipodi:cx="252"
+             id="path844"
+             style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             sodipodi:type="arc" />
+        </g>
+        <g
+           id="g862">
+          <path
+             sodipodi:type="arc"
+             style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             id="path4398"
+             sodipodi:cx="252"
+             sodipodi:cy="552.36218"
+             sodipodi:rx="12"
+             sodipodi:ry="12"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
+          <path
+             transform="matrix(1.25,0,0,1.25,33,-100.45273)"
+             d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
+             sodipodi:ry="12"
+             sodipodi:rx="12"
+             sodipodi:cy="552.36218"
+             sodipodi:cx="252"
+             id="path4400"
+             style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             sodipodi:type="arc" />
+          <path
+             sodipodi:type="star"
+             style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+             id="path4459"
+             sodipodi:sides="5"
+             sodipodi:cx="666.19574"
+             sodipodi:cy="589.50385"
+             sodipodi:r1="7.2431178"
+             sodipodi:r2="4.3458705"
+             sodipodi:arg1="1.0471976"
+             sodipodi:arg2="1.6755161"
+             inkscape:flatsided="false"
+             inkscape:rounded="0.1"
+             inkscape:randomized="0"
+             d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
+             transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/ci/trusty/ubuntu-nodes-controller/lxc/add-more-interface b/ci/trusty/ubuntu-nodes-controller/lxc/add-more-interface
new file mode 100755 (executable)
index 0000000..c9bca9f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brPublic
+lxc.network.name = eth2
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+
+  auto eth2
+  iface eth2 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
diff --git a/ci/trusty/ubuntu-nodes-controller/lxc/add-more-interfaces b/ci/trusty/ubuntu-nodes-controller/lxc/add-more-interfaces
new file mode 100755 (executable)
index 0000000..c9bca9f
--- /dev/null
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+set -u
+
+cat <<EOF >> "$LXC_CONFIG_FILE"
+
+## added by juju charm
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brData
+lxc.network.name = eth1
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+
+lxc.network.type = veth
+lxc.network.flags = up
+lxc.network.link = brPublic
+lxc.network.name = eth2
+lxc.network.hwaddr = 00:16:3e:$(openssl rand -hex 3| sed 's/\(..\)/\1:/g; s/.$//')
+EOF
+
+USERDATA="$LXC_ROOTFS_PATH/var/lib/cloud/seed/nocloud-net/user-data"
+
+additional_interfaces="
+- |
+  cat <<EOF >> /etc/network/interfaces.d/additional-interfaces
+  ## added by juju charm
+  ## those interfaces will be brought up by the upstart job as /etc/init/additional-interfaces.conf
+  ## LP: #1483932
+  auto eth1
+  iface eth1 inet dhcp
+
+  auto eth2
+  iface eth2 inet dhcp
+  EOF
+- machine_agent=\$(hostname | sed -e 's/^juju-/jujud-/')
+- |
+  cat <<EOF > /etc/init/additional-interfaces.conf
+  ## added by juju charm
+  ## LP: #1483932
+  start on started \${machine_agent}
+
+  script
+    sleep 10
+    ifup -a -i /etc/network/interfaces.d/additional-interfaces
+  end script
+  EOF
+"
+additional_interfaces=$(echo "$additional_interfaces" | sed -e 's/$/\\n/' | tr -d '\n')
+
+sed -i.orig -e "s@^runcmd:@\0$additional_interfaces@" \
+    "$USERDATA"
diff --git a/ci/trusty/ubuntu-nodes-controller/lxc/ubuntu-cloud.trusty.conf b/ci/trusty/ubuntu-nodes-controller/lxc/ubuntu-cloud.trusty.conf
new file mode 100644 (file)
index 0000000..b7636b5
--- /dev/null
@@ -0,0 +1,2 @@
+## added by juju charm
+lxc.hook.clone = /usr/local/share/lxc/hooks/add-more-interfaces
diff --git a/ci/trusty/ubuntu-nodes-controller/metadata.yaml b/ci/trusty/ubuntu-nodes-controller/metadata.yaml
new file mode 100644 (file)
index 0000000..8a57c08
--- /dev/null
@@ -0,0 +1,7 @@
+name: ubuntu-nodes-controller
+summary: A pristine Ubuntu Server
+maintainer: Charmers <juju@lists.ubuntu.com>
+description: |
+  This simply deploys Ubuntu Server.
+tags:
+     - misc
diff --git a/ci/trusty/ubuntu-nodes-controller/network/interfaces.host b/ci/trusty/ubuntu-nodes-controller/network/interfaces.host
new file mode 100644 (file)
index 0000000..9377814
--- /dev/null
@@ -0,0 +1,36 @@
+#### original juju generated part ####
+auto lo
+
+# Primary interface (defining the default route)
+iface eth0 inet manual
+
+# Bridge to use for LXC/KVM containers
+auto juju-br0
+iface juju-br0 inet dhcp
+    bridge_ports eth0
+######################################
+
+auto eth2
+iface eth2 inet manual
+
+auto eth2.721
+iface eth2.721 inet manual
+
+auto brData
+iface brData inet dhcp
+  bridge_ports eth2.721
+  bridge_stp off
+  bridge_fd 0
+  bridge_maxwait 0
+
+# The public network interface
+auto eth2.724
+iface eth2.724 inet manual
+
+auto brPublic
+iface brPublic inet dhcp
+        bridge_ports eth2.724
+        bridge_stp off
+        bridge_fd 0
+        bridge_maxwait 0
+
diff --git a/ci/trusty/ubuntu-nodes-controller/revision b/ci/trusty/ubuntu-nodes-controller/revision
new file mode 100644 (file)
index 0000000..d00491f
--- /dev/null
@@ -0,0 +1 @@
+1