Skip to content
This repository was archived by the owner on Mar 22, 2018. It is now read-only.

Commit 692c16e

Browse files
authored
Merge pull request #72 from dims/full-sync-with-master-feb-8
Full sync with master feb 8
2 parents ccfb55a + dd7c079 commit 692c16e

19 files changed

Lines changed: 610 additions & 439 deletions
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
package(default_visibility = ["//visibility:public"])
2+
3+
load(
4+
"@io_bazel_rules_go//go:def.bzl",
5+
"go_library",
6+
"go_test",
7+
)
8+
9+
go_library(
10+
name = "go_default_library",
11+
srcs = [
12+
"metadata.go",
13+
"openstack.go",
14+
"openstack_client.go",
15+
"openstack_instances.go",
16+
"openstack_loadbalancer.go",
17+
"openstack_metrics.go",
18+
"openstack_routes.go",
19+
"openstack_volumes.go",
20+
],
21+
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack",
22+
deps = [
23+
"//pkg/api/v1/service:go_default_library",
24+
"//pkg/apis/core/v1/helper:go_default_library",
25+
"//pkg/cloudprovider:go_default_library",
26+
"//pkg/controller:go_default_library",
27+
"//pkg/kubelet/apis:go_default_library",
28+
"//pkg/util/mount:go_default_library",
29+
"//pkg/volume:go_default_library",
30+
"//pkg/volume/util:go_default_library",
31+
"//vendor/github.com/golang/glog:go_default_library",
32+
"//vendor/github.com/gophercloud/gophercloud:go_default_library",
33+
"//vendor/github.com/gophercloud/gophercloud/openstack:go_default_library",
34+
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions:go_default_library",
35+
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes:go_default_library",
36+
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes:go_default_library",
37+
"//vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes:go_default_library",
38+
"//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces:go_default_library",
39+
"//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach:go_default_library",
40+
"//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers:go_default_library",
41+
"//vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/trusts:go_default_library",
42+
"//vendor/github.com/gophercloud/gophercloud/openstack/identity/v3/tokens:go_default_library",
43+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions:go_default_library",
44+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/external:go_default_library",
45+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips:go_default_library",
46+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers:go_default_library",
47+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners:go_default_library",
48+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers:go_default_library",
49+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors:go_default_library",
50+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools:go_default_library",
51+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups:go_default_library",
52+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules:go_default_library",
53+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks:go_default_library",
54+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/ports:go_default_library",
55+
"//vendor/github.com/gophercloud/gophercloud/pagination:go_default_library",
56+
"//vendor/github.com/mitchellh/mapstructure:go_default_library",
57+
"//vendor/github.com/prometheus/client_golang/prometheus:go_default_library",
58+
"//vendor/gopkg.in/gcfg.v1:go_default_library",
59+
"//vendor/k8s.io/api/core/v1:go_default_library",
60+
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
61+
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
62+
"//vendor/k8s.io/apimachinery/pkg/util/net:go_default_library",
63+
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
64+
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
65+
"//vendor/k8s.io/client-go/util/cert:go_default_library",
66+
"//vendor/k8s.io/utils/exec:go_default_library",
67+
],
68+
)
69+
70+
go_test(
71+
name = "go_default_test",
72+
srcs = [
73+
"metadata_test.go",
74+
"openstack_routes_test.go",
75+
"openstack_test.go",
76+
],
77+
embed = [":go_default_library"],
78+
importpath = "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack",
79+
deps = [
80+
"//pkg/cloudprovider:go_default_library",
81+
"//vendor/github.com/gophercloud/gophercloud:go_default_library",
82+
"//vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/servers:go_default_library",
83+
"//vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers:go_default_library",
84+
"//vendor/k8s.io/api/core/v1:go_default_library",
85+
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
86+
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
87+
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
88+
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
89+
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
90+
],
91+
)
92+
93+
filegroup(
94+
name = "package-srcs",
95+
srcs = glob(["**"]),
96+
tags = ["automanaged"],
97+
visibility = ["//visibility:private"],
98+
)
99+
100+
filegroup(
101+
name = "all-srcs",
102+
srcs = [":package-srcs"],
103+
tags = ["automanaged"],
104+
)

pkg/cloudprovider/providers/openstack/metadata.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,30 +33,30 @@ import (
3333
)
3434

3535
const (
36-
// metadataUrlTemplate allows building an OpenStack Metadata service URL.
36+
// metadataURLTemplate allows building an OpenStack Metadata service URL.
3737
// It's a hardcoded IPv4 link-local address as documented in "OpenStack Cloud
3838
// Administrator Guide", chapter Compute - Networking with nova-network.
39-
// https://docs.openstack.org/admin-guide/compute-networking-nova.html#metadata-service
39+
//https://docs.openstack.org/nova/latest/admin/networking-nova.html#metadata-service
4040
defaultMetadataVersion = "2012-08-10"
41-
metadataUrlTemplate = "http://169.254.169.254/openstack/%s/meta_data.json"
41+
metadataURLTemplate = "http://169.254.169.254/openstack/%s/meta_data.json"
4242

4343
// metadataID is used as an identifier on the metadata search order configuration.
4444
metadataID = "metadataService"
4545

4646
// Config drive is defined as an iso9660 or vfat (deprecated) drive
4747
// with the "config-2" label.
48-
// http://docs.openstack.org/user-guide/cli-config-drive.html
48+
//https://docs.openstack.org/nova/latest/user/config-drive.html
4949
configDriveLabel = "config-2"
5050
configDrivePathTemplate = "openstack/%s/meta_data.json"
5151

5252
// configDriveID is used as an identifier on the metadata search order configuration.
5353
configDriveID = "configDrive"
5454
)
5555

56+
// ErrBadMetadata is used to indicate a problem parsing data from metadata server
5657
var ErrBadMetadata = errors.New("invalid OpenStack metadata, got empty uuid")
5758

58-
// There are multiple device types. To keep it simple, we're using a single structure
59-
// for all device metadata types.
59+
// DeviceMetadata is a single/simplified data structure for all kinds of device metadata types.
6060
type DeviceMetadata struct {
6161
Type string `json:"type"`
6262
Bus string `json:"bus,omitempty"`
@@ -65,11 +65,12 @@ type DeviceMetadata struct {
6565
// .. and other fields.
6666
}
6767

68-
// Assumes the "2012-08-10" meta_data.json format.
68+
// Metadata has the information fetched from OpenStack metadata service or
69+
// config drives. Assumes the "2012-08-10" meta_data.json format.
6970
// See http://docs.openstack.org/user-guide/cli_config_drive.html
7071
type Metadata struct {
71-
Uuid string `json:"uuid"`
72-
Name string `json:"name"`
72+
UUID string `json:"uuid"`
73+
Hostname string `json:"hostname"`
7374
AvailabilityZone string `json:"availability_zone"`
7475
Devices []DeviceMetadata `json:"devices,omitempty"`
7576
// .. and other fields we don't care about. Expand as necessary.
@@ -84,15 +85,15 @@ func parseMetadata(r io.Reader) (*Metadata, error) {
8485
return nil, err
8586
}
8687

87-
if metadata.Uuid == "" {
88+
if metadata.UUID == "" {
8889
return nil, ErrBadMetadata
8990
}
9091

9192
return &metadata, nil
9293
}
9394

94-
func getMetadataUrl(metadataVersion string) string {
95-
return fmt.Sprintf(metadataUrlTemplate, metadataVersion)
95+
func getMetadataURL(metadataVersion string) string {
96+
return fmt.Sprintf(metadataURLTemplate, metadataVersion)
9697
}
9798

9899
func getConfigDrivePath(metadataVersion string) string {
@@ -147,16 +148,16 @@ func getMetadataFromConfigDrive(metadataVersion string) (*Metadata, error) {
147148

148149
func getMetadataFromMetadataService(metadataVersion string) (*Metadata, error) {
149150
// Try to get JSON from metadata server.
150-
metadataUrl := getMetadataUrl(metadataVersion)
151-
glog.V(4).Infof("Attempting to fetch metadata from %s", metadataUrl)
152-
resp, err := http.Get(metadataUrl)
151+
metadataURL := getMetadataURL(metadataVersion)
152+
glog.V(4).Infof("Attempting to fetch metadata from %s", metadataURL)
153+
resp, err := http.Get(metadataURL)
153154
if err != nil {
154-
return nil, fmt.Errorf("error fetching %s: %v", metadataUrl, err)
155+
return nil, fmt.Errorf("error fetching %s: %v", metadataURL, err)
155156
}
156157
defer resp.Body.Close()
157158

158159
if resp.StatusCode != http.StatusOK {
159-
err = fmt.Errorf("unexpected status code when reading metadata from %s: %s", metadataUrl, resp.Status)
160+
err = fmt.Errorf("unexpected status code when reading metadata from %s: %s", metadataURL, resp.Status)
160161
return nil, err
161162
}
162163

pkg/cloudprovider/providers/openstack/metadata_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import (
2222
)
2323

2424
var FakeMetadata = Metadata{
25-
Uuid: "83679162-1378-4288-a2d4-70e13ec132aa",
26-
Name: "test",
25+
UUID: "83679162-1378-4288-a2d4-70e13ec132aa",
26+
Hostname: "test",
2727
AvailabilityZone: "nova",
2828
}
2929

@@ -81,12 +81,12 @@ func TestParseMetadata(t *testing.T) {
8181
t.Fatalf("Should succeed when provided with valid data: %s", err)
8282
}
8383

84-
if md.Name != "test" {
85-
t.Errorf("incorrect name: %s", md.Name)
84+
if md.Hostname != "test.novalocal" {
85+
t.Errorf("incorrect hostname: %s", md.Hostname)
8686
}
8787

88-
if md.Uuid != "83679162-1378-4288-a2d4-70e13ec132aa" {
89-
t.Errorf("incorrect uuid: %s", md.Uuid)
88+
if md.UUID != "83679162-1378-4288-a2d4-70e13ec132aa" {
89+
t.Errorf("incorrect uuid: %s", md.UUID)
9090
}
9191

9292
if md.AvailabilityZone != "nova" {
@@ -108,4 +108,8 @@ func TestParseMetadata(t *testing.T) {
108108
if md.Devices[0].Type != "disk" {
109109
t.Errorf("incorrect device type: %s", md.Devices[0].Type)
110110
}
111+
112+
if md.Devices[0].Serial != "6df1888b-f373-41cf-b960-3786e60a28ef" {
113+
t.Errorf("incorrect device serial: %s", md.Devices[0].Serial)
114+
}
111115
}

0 commit comments

Comments
 (0)