Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
d63398a5
Commit
d63398a5
authored
Jan 29, 2016
by
k8s-merge-robot
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #18829 from lebauce/openstack-use-os-ext-ips
Auto commit by PR queue bot
parents
79126825
b9dfe1b7
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
68 deletions
+72
-68
openstack.go
pkg/cloudprovider/providers/openstack/openstack.go
+72
-68
No files found.
pkg/cloudprovider/providers/openstack/openstack.go
View file @
d63398a5
...
@@ -352,58 +352,90 @@ func getServerByName(client *gophercloud.ServiceClient, name string) (*servers.S
...
@@ -352,58 +352,90 @@ func getServerByName(client *gophercloud.ServiceClient, name string) (*servers.S
return
&
serverList
[
0
],
nil
return
&
serverList
[
0
],
nil
}
}
func
findAddrs
(
netblob
interface
{})
[]
string
{
func
getAddressesByName
(
client
*
gophercloud
.
ServiceClient
,
name
string
)
([]
api
.
NodeAddress
,
error
)
{
// Run-time types for the win :(
srv
,
err
:=
getServerByName
(
client
,
name
)
ret
:=
[]
string
{}
if
err
!=
nil
{
list
,
ok
:=
netblob
.
([]
interface
{})
return
nil
,
err
if
!
ok
{
}
return
ret
}
addrs
:=
[]
api
.
NodeAddress
{}
for
_
,
item
:=
range
list
{
props
,
ok
:=
item
.
(
map
[
string
]
interface
{})
for
network
,
netblob
:=
range
srv
.
Addresses
{
if
!
ok
{
list
,
ok
:=
netblob
.
([]
interface
{})
continue
}
tmp
,
ok
:=
props
[
"addr"
]
if
!
ok
{
if
!
ok
{
continue
continue
}
}
addr
,
ok
:=
tmp
.
(
string
)
if
!
ok
{
for
_
,
item
:=
range
list
{
continue
var
addressType
api
.
NodeAddressType
props
,
ok
:=
item
.
(
map
[
string
]
interface
{})
if
!
ok
{
continue
}
extIPType
,
ok
:=
props
[
"OS-EXT-IPS:type"
]
if
(
ok
&&
extIPType
==
"floating"
)
||
(
!
ok
&&
network
==
"public"
)
{
addressType
=
api
.
NodeExternalIP
}
else
{
addressType
=
api
.
NodeInternalIP
}
tmp
,
ok
:=
props
[
"addr"
]
if
!
ok
{
continue
}
addr
,
ok
:=
tmp
.
(
string
)
if
!
ok
{
continue
}
api
.
AddToNodeAddresses
(
&
addrs
,
api
.
NodeAddress
{
Type
:
addressType
,
Address
:
addr
,
},
)
}
}
ret
=
append
(
ret
,
addr
)
}
}
return
ret
// AccessIPs are usually duplicates of "public" addresses.
if
srv
.
AccessIPv4
!=
""
{
api
.
AddToNodeAddresses
(
&
addrs
,
api
.
NodeAddress
{
Type
:
api
.
NodeExternalIP
,
Address
:
srv
.
AccessIPv4
,
},
)
}
if
srv
.
AccessIPv6
!=
""
{
api
.
AddToNodeAddresses
(
&
addrs
,
api
.
NodeAddress
{
Type
:
api
.
NodeExternalIP
,
Address
:
srv
.
AccessIPv6
,
},
)
}
return
addrs
,
nil
}
}
func
getAddressByName
(
api
*
gophercloud
.
ServiceClient
,
name
string
)
(
string
,
error
)
{
func
getAddressByName
(
client
*
gophercloud
.
ServiceClient
,
name
string
)
(
string
,
error
)
{
srv
,
err
:=
getServerByName
(
api
,
name
)
addrs
,
err
:=
getAddressesByName
(
client
,
name
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
else
if
len
(
addrs
)
==
0
{
return
""
,
ErrNoAddressFound
}
}
var
s
string
for
_
,
addr
:=
range
addrs
{
if
s
==
""
{
if
addr
.
Type
==
api
.
NodeInternalIP
{
if
tmp
:=
findAddrs
(
srv
.
Addresses
[
"private"
]);
len
(
tmp
)
>=
1
{
return
addr
.
Address
,
nil
s
=
tmp
[
0
]
}
}
if
s
==
""
{
if
tmp
:=
findAddrs
(
srv
.
Addresses
[
"public"
]);
len
(
tmp
)
>=
1
{
s
=
tmp
[
0
]
}
}
}
}
if
s
==
""
{
s
=
srv
.
AccessIPv4
return
addrs
[
0
]
.
Address
,
nil
}
if
s
==
""
{
s
=
srv
.
AccessIPv6
}
if
s
==
""
{
return
""
,
ErrNoAddressFound
}
return
s
,
nil
}
}
// Implementation of Instances.CurrentNodeName
// Implementation of Instances.CurrentNodeName
...
@@ -418,39 +450,11 @@ func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error {
...
@@ -418,39 +450,11 @@ func (i *Instances) AddSSHKeyToAllInstances(user string, keyData []byte) error {
func
(
i
*
Instances
)
NodeAddresses
(
name
string
)
([]
api
.
NodeAddress
,
error
)
{
func
(
i
*
Instances
)
NodeAddresses
(
name
string
)
([]
api
.
NodeAddress
,
error
)
{
glog
.
V
(
4
)
.
Infof
(
"NodeAddresses(%v) called"
,
name
)
glog
.
V
(
4
)
.
Infof
(
"NodeAddresses(%v) called"
,
name
)
srv
,
err
:=
getServer
ByName
(
i
.
compute
,
name
)
addrs
,
err
:=
getAddresses
ByName
(
i
.
compute
,
name
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
addrs
:=
[]
api
.
NodeAddress
{}
for
_
,
addr
:=
range
findAddrs
(
srv
.
Addresses
[
"private"
])
{
addrs
=
append
(
addrs
,
api
.
NodeAddress
{
Type
:
api
.
NodeInternalIP
,
Address
:
addr
,
})
}
for
_
,
addr
:=
range
findAddrs
(
srv
.
Addresses
[
"public"
])
{
addrs
=
append
(
addrs
,
api
.
NodeAddress
{
Type
:
api
.
NodeExternalIP
,
Address
:
addr
,
})
}
// AccessIPs are usually duplicates of "public" addresses.
api
.
AddToNodeAddresses
(
&
addrs
,
api
.
NodeAddress
{
Type
:
api
.
NodeExternalIP
,
Address
:
srv
.
AccessIPv6
,
},
api
.
NodeAddress
{
Type
:
api
.
NodeExternalIP
,
Address
:
srv
.
AccessIPv4
,
},
)
glog
.
V
(
4
)
.
Infof
(
"NodeAddresses(%v) => %v"
,
name
,
addrs
)
glog
.
V
(
4
)
.
Infof
(
"NodeAddresses(%v) => %v"
,
name
,
addrs
)
return
addrs
,
nil
return
addrs
,
nil
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment