github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/state/api/state.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package api 5 6 import ( 7 "launchpad.net/juju-core/state/api/agent" 8 "launchpad.net/juju-core/state/api/charmrevisionupdater" 9 "launchpad.net/juju-core/state/api/deployer" 10 "launchpad.net/juju-core/state/api/environment" 11 "launchpad.net/juju-core/state/api/firewaller" 12 "launchpad.net/juju-core/state/api/keyupdater" 13 "launchpad.net/juju-core/state/api/logger" 14 "launchpad.net/juju-core/state/api/machiner" 15 "launchpad.net/juju-core/state/api/params" 16 "launchpad.net/juju-core/state/api/provisioner" 17 "launchpad.net/juju-core/state/api/rsyslog" 18 "launchpad.net/juju-core/state/api/uniter" 19 "launchpad.net/juju-core/state/api/upgrader" 20 ) 21 22 // Login authenticates as the entity with the given name and password. 23 // Subsequent requests on the state will act as that entity. This 24 // method is usually called automatically by Open. The machine nonce 25 // should be empty unless logging in as a machine agent. 26 func (st *State) Login(tag, password, nonce string) error { 27 err := st.Call("Admin", "", "Login", ¶ms.Creds{ 28 AuthTag: tag, 29 Password: password, 30 Nonce: nonce, 31 }, nil) 32 if err == nil { 33 st.authTag = tag 34 } 35 return err 36 } 37 38 // Client returns an object that can be used 39 // to access client-specific functionality. 40 func (st *State) Client() *Client { 41 return &Client{st} 42 } 43 44 // Machiner returns a version of the state that provides functionality 45 // required by the machiner worker. 46 func (st *State) Machiner() *machiner.State { 47 return machiner.NewState(st) 48 } 49 50 // Provisioner returns a version of the state that provides functionality 51 // required by the provisioner worker. 52 func (st *State) Provisioner() *provisioner.State { 53 return provisioner.NewState(st) 54 } 55 56 // Uniter returns a version of the state that provides functionality 57 // required by the uniter worker. 58 func (st *State) Uniter() *uniter.State { 59 return uniter.NewState(st, st.authTag) 60 } 61 62 // Firewaller returns a version of the state that provides functionality 63 // required by the firewaller worker. 64 func (st *State) Firewaller() *firewaller.State { 65 return firewaller.NewState(st) 66 } 67 68 // Agent returns a version of the state that provides 69 // functionality required by the agent code. 70 func (st *State) Agent() *agent.State { 71 return agent.NewState(st) 72 } 73 74 // Upgrader returns access to the Upgrader API 75 func (st *State) Upgrader() *upgrader.State { 76 return upgrader.NewState(st) 77 } 78 79 // Deployer returns access to the Deployer API 80 func (st *State) Deployer() *deployer.State { 81 return deployer.NewState(st) 82 } 83 84 // Environment returns access to the Environment API 85 func (st *State) Environment() *environment.Facade { 86 return environment.NewFacade(st) 87 } 88 89 // Logger returns access to the Logger API 90 func (st *State) Logger() *logger.State { 91 return logger.NewState(st) 92 } 93 94 // KeyUpdater returns access to the KeyUpdater API 95 func (st *State) KeyUpdater() *keyupdater.State { 96 return keyupdater.NewState(st) 97 } 98 99 // CharmRevisionUpdater returns access to the CharmRevisionUpdater API 100 func (st *State) CharmRevisionUpdater() *charmrevisionupdater.State { 101 return charmrevisionupdater.NewState(st) 102 } 103 104 // Rsyslog returns access to the Rsyslog API 105 func (st *State) Rsyslog() *rsyslog.State { 106 return rsyslog.NewState(st) 107 }