func (r elbRouter) AddBackend(name string) error { var err error options := elb.CreateLoadBalancer{ Name: name, Listeners: []elb.Listener{ { InstancePort: 80, InstanceProtocol: "HTTP", LoadBalancerPort: 80, Protocol: "HTTP", }, }, } vpc, _ := config.GetBool("juju:elb-use-vpc") if vpc { options.Subnets, err = config.GetList("juju:elb-vpc-subnets") if err != nil { return err } options.SecurityGroups, err = config.GetList("juju:elb-vpc-secgroups") if err != nil { return err } options.Scheme = "internal" } else { options.AvailZones, err = config.GetList("juju:elb-avail-zones") if err != nil { return err } } _, err = r.elb().CreateLoadBalancer(&options) return router.Store(name, name) }
// Create creates a new Elastic Load Balancing instance for the given app. The // name of the instance will be the same as the name of the app. func (m *ELBManager) Create(app provision.Named) error { options := elb.CreateLoadBalancer{ Name: app.GetName(), Listeners: []elb.Listener{ { InstancePort: 80, InstanceProtocol: "HTTP", LoadBalancerPort: 80, Protocol: "HTTP", }, }, } var err error if m.vpc() { options.Subnets, err = config.GetList("juju:elb-vpc-subnets") if err != nil { log.Fatal(err) } options.SecurityGroups, err = config.GetList("juju:elb-vpc-secgroups") if err != nil { log.Fatal(err) } options.Scheme = "internal" } else { options.AvailZones, err = config.GetList("juju:elb-avail-zones") if err != nil { log.Fatal(err) } } resp, err := m.elb().CreateLoadBalancer(&options) if err != nil { return err } lb := loadBalancer{Name: app.GetName(), DNSName: resp.DNSName} conn, collection := m.collection() defer conn.Close() return collection.Insert(lb) }