asteris-llc/converge

View on GitHub
resource/systemd/unit/unit_linux.go

Summary

Maintainability
A
0 mins
Test Coverage
// Copyright © 2016 Asteris, LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// +build linux

package unit

import (
    "fmt"

    "github.com/coreos/go-systemd/dbus"
)

// PPtUnitStatus pretty-prints a UnitStatus
func PPtUnitStatus(u *dbus.UnitStatus) string {
    fmtStr := `
UnitStatus
---------------
Name:        %s
Description: %s
LoadState:   %s
ActiveState: %s
SubState:    %s
Followed:    %s
Path:        %v
JobID:       %d
JobType:     %s
JobPath:     %v
---------------
`
    return fmt.Sprintf(fmtStr,
        u.Name,
        u.Description,
        u.LoadState,
        u.ActiveState,
        u.SubState,
        u.Followed,
        u.Path,
        u.JobId,
        u.JobType,
        u.JobPath,
    )
}

func newFromStatus(status *dbus.UnitStatus) *Unit {
    return &Unit{
        Name:        status.Name,
        Description: status.Description,
        ActiveState: status.ActiveState,
        LoadState:   status.LoadState,
        Type:        UnitTypeFromName(status.Name),
    }
}

// SetProperties sets the global properties of a unit from a properties map
func (u *Unit) SetProperties(m map[string]interface{}) {
    u.Properties = *newPropertiesFromMap(m)
    u.Path = u.FragmentPath
}

// SetTypedProperties sets type specific properties of a unit from a map
func (u *Unit) SetTypedProperties(m map[string]interface{}) {
    switch u.Type {
    case UnitTypeService:
        u.ServiceProperties = newServiceTypePropertiesFromMap(m)
    case UnitTypeSocket:
        u.SocketProperties = newSocketTypePropertiesFromMap(m)
    case UnitTypeDevice:
        u.DeviceProperties = newDeviceTypePropertiesFromMap(m)
    case UnitTypeMount:
        u.MountProperties = newMountTypePropertiesFromMap(m)
    case UnitTypeAutoMount:
        u.AutomountProperties = newAutomountTypePropertiesFromMap(m)
    case UnitTypeSwap:
        u.SwapProperties = newSwapTypePropertiesFromMap(m)
    case UnitTypePath:
        u.PathProperties = newPathTypePropertiesFromMap(m)
    case UnitTypeTimer:
        u.TimerProperties = newTimerTypePropertiesFromMap(m)
    case UnitTypeSlice:
        u.SliceProperties = newSliceTypePropertiesFromMap(m)
    case UnitTypeScope:
        u.ScopeProperties = newScopeTypePropertiesFromMap(m)
    case UnitTypeTarget, UnitTypeSnapshot, UnitTypeUnknown:
        /* No type-specific properties for these unit types */
    }
}