func assertCustomCharm(c *C, ch *state.Charm, series string, meta *charm.Meta, config *charm.Config, revision int) { // Check Charm interface method results. c.Assert(ch.Meta(), DeepEquals, meta) c.Assert(ch.Config(), DeepEquals, config) c.Assert(ch.Revision(), DeepEquals, revision) // Test URL matches charm and expected series. url := ch.URL() c.Assert(url.Series, Equals, series) c.Assert(url.Revision, Equals, ch.Revision()) // Ignore the BundleURL and BundleSHA256 methods, they're irrelevant. }
// AddService creates a new service with the given name to run the given // charm. If svcName is empty, the charm name will be used. func (conn *Conn) AddService(name string, ch *state.Charm) (*state.Service, error) { if name == "" { name = ch.URL().Name // TODO ch.Meta().Name ? } svc, err := conn.State.AddService(name, ch) if err != nil { return nil, err } meta := ch.Meta() for rname, rel := range meta.Peers { ep := state.Endpoint{ name, rel.Interface, rname, state.RolePeer, rel.Scope, } if _, err := conn.State.AddRelation(ep); err != nil { return nil, fmt.Errorf("cannot add peer relation %q to service %q: %v", rname, name, err) } } return svc, nil }
func assertStandardCharm(c *C, ch *state.Charm, series string) { chd := testing.Charms.Dir(ch.Meta().Name) assertCustomCharm(c, ch, series, chd.Meta(), chd.Config(), chd.Revision()) }
func assertCharm(c *C, bun *corecharm.Bundle, sch *state.Charm) { c.Assert(bun.Revision(), Equals, sch.Revision()) c.Assert(bun.Meta(), DeepEquals, sch.Meta()) c.Assert(bun.Config(), DeepEquals, sch.Config()) }