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", &params.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  }