~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cloudconfig/cloudinit/cloudinit_win.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2015 Canonical Ltd.
 
2
// Copyright 2015 Cloudbase Solutions SRL
 
3
// Licensed under the AGPLv3, see LICENCE file for details.
 
4
 
 
5
package cloudinit
 
6
 
 
7
import (
 
8
        "github.com/juju/utils/packaging"
 
9
        "github.com/juju/utils/proxy"
 
10
)
 
11
 
 
12
// windowsCloudConfig is the cloudconfig type specific to Windows machines.
 
13
// It mostly deals entirely with passing the equivalent of runcmds to
 
14
// cloudbase-init, leaving most of the other functionalities uninmplemented.
 
15
// It implements the CloudConfig interface.
 
16
type windowsCloudConfig struct {
 
17
        *cloudConfig
 
18
}
 
19
 
 
20
// SetPackageProxy is defined on the PackageProxyConfig interface.
 
21
func (cfg *windowsCloudConfig) SetPackageProxy(url string) {
 
22
}
 
23
 
 
24
// UnsetPackageProxy is defined on the PackageProxyConfig interface.
 
25
func (cfg *windowsCloudConfig) UnsetPackageProxy() {
 
26
}
 
27
 
 
28
// PackageProxy is defined on the PackageProxyConfig interface.
 
29
func (cfg *windowsCloudConfig) PackageProxy() string {
 
30
        return ""
 
31
}
 
32
 
 
33
// SetPackageMirror is defined on the PackageMirrorConfig interface.
 
34
func (cfg *windowsCloudConfig) SetPackageMirror(url string) {
 
35
}
 
36
 
 
37
// UnsetPackageMirror is defined on the PackageMirrorConfig interface.
 
38
func (cfg *windowsCloudConfig) UnsetPackageMirror() {
 
39
}
 
40
 
 
41
// PackageMirror is defined on the PackageMirrorConfig interface.
 
42
func (cfg *windowsCloudConfig) PackageMirror() string {
 
43
        return ""
 
44
}
 
45
 
 
46
// AddPackageSource is defined on the PackageSourcesConfig interface.
 
47
func (cfg *windowsCloudConfig) AddPackageSource(src packaging.PackageSource) {
 
48
}
 
49
 
 
50
// PackageSources is defined on the PackageSourcesConfig interface.
 
51
func (cfg *windowsCloudConfig) PackageSources() []packaging.PackageSource {
 
52
        return nil
 
53
}
 
54
 
 
55
// AddPackagePreferences is defined on the PackageSourcesConfig interface.
 
56
func (cfg *windowsCloudConfig) AddPackagePreferences(prefs packaging.PackagePreferences) {
 
57
}
 
58
 
 
59
// PackagePreferences is defined on the PackageSourcesConfig interface.
 
60
func (cfg *windowsCloudConfig) PackagePreferences() []packaging.PackagePreferences {
 
61
        return nil
 
62
}
 
63
 
 
64
// RenderYAML is defined on the RenderConfig interface.
 
65
func (cfg *windowsCloudConfig) RenderYAML() ([]byte, error) {
 
66
        return cfg.renderWindows()
 
67
}
 
68
 
 
69
// RenderScript is defined on the RenderConfig interface.
 
70
func (cfg *windowsCloudConfig) RenderScript() (string, error) {
 
71
        // NOTE: This shouldn't really be called on windows as it's used only for
 
72
        // initialization via ssh.
 
73
        script, err := cfg.renderWindows()
 
74
        if err != nil {
 
75
                return "", err
 
76
        }
 
77
 
 
78
        return string(script), err
 
79
}
 
80
 
 
81
// getCommandsForAddingPackages is defined on the RenderConfig interface.
 
82
func (cfg *windowsCloudConfig) getCommandsForAddingPackages() ([]string, error) {
 
83
        return nil, nil
 
84
}
 
85
 
 
86
// renderWindows is a helper function which renders the runCmds of the Windows
 
87
// CloudConfig to a PowerShell script.
 
88
func (cfg *windowsCloudConfig) renderWindows() ([]byte, error) {
 
89
        winCmds := cfg.RunCmds()
 
90
        var script []byte
 
91
        newline := "\r\n"
 
92
        header := "#ps1_sysnative\r\n"
 
93
        script = append(script, header...)
 
94
        for _, cmd := range winCmds {
 
95
                script = append(script, newline...)
 
96
                script = append(script, cmd...)
 
97
        }
 
98
        return script, nil
 
99
}
 
100
 
 
101
// AddPackageCommands is defined on the AdvancedPackagingConfig interface.
 
102
func (cfg *windowsCloudConfig) AddPackageCommands(
 
103
        aptProxySettings proxy.Settings,
 
104
        aptMirror string,
 
105
        addUpdateScripts bool,
 
106
        addUpgradeScripts bool,
 
107
) {
 
108
        return
 
109
}
 
110
 
 
111
// AddCloudArchiveCloudTools is defined on the AdvancedPackagingConfig
 
112
// interface.
 
113
func (cfg *windowsCloudConfig) AddCloudArchiveCloudTools() {
 
114
}
 
115
 
 
116
// addRequiredPackages is defined on the AdvancedPackagingConfig interface.
 
117
func (cfg *windowsCloudConfig) addRequiredPackages() {
 
118
}
 
119
 
 
120
// updateProxySettings is defined on the AdvancedPackagingConfig interface.
 
121
func (cfg *windowsCloudConfig) updateProxySettings(proxy.Settings) {
 
122
}