import "github.com/juju/juju/state" func printUnit(unitID string) { st, err := state.NewState(nil) if err != nil { panic(err) } unit, err := st.Unit(unitID) if err != nil { panic(err) } fmt.Printf("Unit Name: %s\n", unit.Name()) fmt.Printf("Unit Status: %s\n", unit.Status()) }
import ( "github.com/juju/juju/api" "github.com/juju/juju/state" "github.com/juju/juju/state/applications" ) func createDjangoApp() { st, err := state.NewState(nil) if err != nil { panic(err) } apiConn, err := api.Open(statecfg.DefaultAPIAddress(), nil) if err != nil { panic(err) } defer apiConn.Close() appParams := applications.Application{ Name: "django", CharmURL: "cs:~containers/django", Config: map[string]interface{}{"http-port": 80}, } _, err = apiConn.CreateApplications([]applications.Application{appParams}) if err != nil { panic(err) } _, err = st.WatchApplications() if err != nil { panic(err) } app, err := st.Application("django") if err != nil { panic(err) } _, err = app.AddUnits(2, nil) if err != nil { panic(err) } }Overall, the State Model package library provides a set of powerful APIs for interacting with Juju models and their constituent parts.