// Remove removes the unit from state, calling EnsureDead first, then Remove. // It will fail if the unit is not present. func (u *Unit) Remove() error { var result params.ErrorResults args := params.Entities{ Entities: []params.Entity{{Tag: u.tag}}, } err := u.st.call("Remove", args, &result) if err != nil { return err } return result.OneError() }
// DestroyAllSubordinates destroys all subordinates of the unit. func (u *Unit) DestroyAllSubordinates() error { var result params.ErrorResults args := params.Entities{ Entities: []params.Entity{{Tag: u.tag}}, } err := u.st.call("DestroyAllSubordinates", args, &result) if err != nil { return err } return result.OneError() }
// EnsureDead sets the machine lifecycle to Dead if it is Alive or // Dying. It does nothing otherwise. func (m *Machine) EnsureDead() error { var result params.ErrorResults args := params.Entities{ Entities: []params.Entity{{Tag: m.tag}}, } err := m.st.call("EnsureDead", args, &result) if err != nil { return err } return result.OneError() }
// SetPassword sets the unit's password. func (u *Unit) SetPassword(password string) error { var result params.ErrorResults args := params.EntityPasswords{ Changes: []params.EntityPassword{ {Tag: u.tag, Password: password}, }, } err := u.st.call("SetPasswords", args, &result) if err != nil { return err } return result.OneError() }
// SetStatus sets the status of the unit. func (u *Unit) SetStatus(status params.Status, info string, data params.StatusData) error { var result params.ErrorResults args := params.SetStatus{ Entities: []params.EntityStatus{ {Tag: u.tag, Status: status, Info: info, Data: data}, }, } err := u.st.call("SetStatus", args, &result) if err != nil { return err } return result.OneError() }
// ClosePort sets the policy of the port with protocol and number to // be closed. // // TODO: We should really be opening and closing ports on machines, // rather than units. func (u *Unit) ClosePort(protocol string, number int) error { var result params.ErrorResults args := params.EntitiesPorts{ Entities: []params.EntityPort{ {Tag: u.tag, Protocol: protocol, Port: number}, }, } err := u.st.call("ClosePort", args, &result) if err != nil { return err } return result.OneError() }
// SetMachineAddresses sets the machine determined addresses of the machine. func (m *Machine) SetMachineAddresses(addresses []instance.Address) error { var result params.ErrorResults args := params.SetMachinesAddresses{ MachineAddresses: []params.MachineAddresses{ {Tag: m.Tag(), Addresses: addresses}, }, } err := m.st.call("SetMachineAddresses", args, &result) if err != nil { return err } return result.OneError() }
// LeaveScope signals that the unit has left its scope in the relation. // After the unit has left its relation scope, it is no longer a member // of the relation; if the relation is dying when its last member unit // leaves, it is removed immediately. It is not an error to leave a scope // that the unit is not, or never was, a member of. func (ru *RelationUnit) LeaveScope() error { var result params.ErrorResults args := params.RelationUnits{ RelationUnits: []params.RelationUnit{{ Relation: ru.relation.tag, Unit: ru.unit.tag, }}, } err := ru.st.call("LeaveScope", args, &result) if err != nil { return err } return result.OneError() }
// SetPassword sets the password associated with the agent's entity. func (m *Entity) SetPassword(password string) error { var results params.ErrorResults args := params.EntityPasswords{ Changes: []params.EntityPassword{{ Tag: m.tag, Password: password, }}, } err := m.st.caller.Call("Agent", "", "SetPasswords", args, &results) if err != nil { return err } return results.OneError() }
// SetCharmURL marks the unit as currently using the supplied charm URL. // An error will be returned if the unit is dead, or the charm URL not known. func (u *Unit) SetCharmURL(curl *charm.URL) error { if curl == nil { return fmt.Errorf("charm URL cannot be nil") } var result params.ErrorResults args := params.EntitiesCharmURL{ Entities: []params.EntityCharmURL{ {Tag: u.tag, CharmURL: curl.String()}, }, } err := u.st.call("SetCharmURL", args, &result) if err != nil { return err } return result.OneError() }
// SetInstanceInfo sets the provider specific instance id, nonce, // metadata, networks and interfaces for this machine. Once set, the // instance id cannot be changed. func (m *Machine) SetInstanceInfo( id instance.Id, nonce string, characteristics *instance.HardwareCharacteristics, networks []params.Network, interfaces []params.NetworkInterface, ) error { var result params.ErrorResults args := params.InstancesInfo{ Machines: []params.InstanceInfo{{ Tag: m.tag, InstanceId: id, Nonce: nonce, Characteristics: characteristics, Networks: networks, Interfaces: interfaces, }}, } err := m.st.call("SetInstanceInfo", args, &result) if err != nil { return err } return result.OneError() }