github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/apiserver/uniter/uniter_v2.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  // The uniter package implements the API interface used by the uniter
     5  // worker. This file contains the API facade version 2.
     6  
     7  package uniter
     8  
     9  import (
    10  	"github.com/juju/juju/apiserver/common"
    11  	"github.com/juju/juju/state"
    12  )
    13  
    14  func init() {
    15  	common.RegisterStandardFacade("Uniter", 2, NewUniterAPIV2)
    16  }
    17  
    18  // UniterAPI implements the API version 2, used by the uniter worker.
    19  type UniterAPIV2 struct {
    20  	UniterAPIV1
    21  	StorageAPI
    22  }
    23  
    24  // NewUniterAPIV2 creates a new instance of the Uniter API, version 2.
    25  func NewUniterAPIV2(st *state.State, resources *common.Resources, authorizer common.Authorizer) (*UniterAPIV2, error) {
    26  	baseAPI, err := NewUniterAPIV1(st, resources, authorizer)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  	storageAPI, err := NewStorageAPI(st, resources, baseAPI.accessUnit)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  	return &UniterAPIV2{
    35  		UniterAPIV1: *baseAPI,
    36  		StorageAPI:  *storageAPI,
    37  	}, nil
    38  }