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
37951c33
Commit
37951c33
authored
Jun 15, 2017
by
Federico Gimenez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
OpenStack for cloud-controller-manager
parent
418c319e
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
111 additions
and
6 deletions
+111
-6
openstack_instances.go
pkg/cloudprovider/providers/openstack/openstack_instances.go
+68
-3
openstack_test.go
pkg/cloudprovider/providers/openstack/openstack_test.go
+43
-3
No files found.
pkg/cloudprovider/providers/openstack/openstack_instances.go
View file @
37951c33
...
@@ -18,6 +18,8 @@ package openstack
...
@@ -18,6 +18,8 @@ package openstack
import
(
import
(
"errors"
"errors"
"fmt"
"net/url"
"github.com/golang/glog"
"github.com/golang/glog"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud"
...
@@ -107,7 +109,24 @@ func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error)
...
@@ -107,7 +109,24 @@ func (i *Instances) NodeAddresses(name types.NodeName) ([]v1.NodeAddress, error)
// This method will not be called from the node that is requesting this ID. i.e. metadata service
// This method will not be called from the node that is requesting this ID. i.e. metadata service
// and other local methods cannot be used here
// and other local methods cannot be used here
func
(
i
*
Instances
)
NodeAddressesByProviderID
(
providerID
string
)
([]
v1
.
NodeAddress
,
error
)
{
func
(
i
*
Instances
)
NodeAddressesByProviderID
(
providerID
string
)
([]
v1
.
NodeAddress
,
error
)
{
return
[]
v1
.
NodeAddress
{},
errors
.
New
(
"unimplemented"
)
instanceID
,
err
:=
instanceIDFromProviderID
(
providerID
)
if
err
!=
nil
{
return
[]
v1
.
NodeAddress
{},
err
}
server
,
err
:=
servers
.
Get
(
i
.
compute
,
instanceID
)
.
Extract
()
if
err
!=
nil
{
return
[]
v1
.
NodeAddress
{},
err
}
addresses
,
err
:=
nodeAddresses
(
server
)
if
err
!=
nil
{
return
[]
v1
.
NodeAddress
{},
err
}
return
addresses
,
nil
}
}
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
...
@@ -142,10 +161,56 @@ func (i *Instances) InstanceID(name types.NodeName) (string, error) {
...
@@ -142,10 +161,56 @@ func (i *Instances) InstanceID(name types.NodeName) (string, error) {
// This method will not be called from the node that is requesting this ID. i.e. metadata service
// This method will not be called from the node that is requesting this ID. i.e. metadata service
// and other local methods cannot be used here
// and other local methods cannot be used here
func
(
i
*
Instances
)
InstanceTypeByProviderID
(
providerID
string
)
(
string
,
error
)
{
func
(
i
*
Instances
)
InstanceTypeByProviderID
(
providerID
string
)
(
string
,
error
)
{
return
""
,
errors
.
New
(
"unimplemented"
)
instanceID
,
err
:=
instanceIDFromProviderID
(
providerID
)
if
err
!=
nil
{
return
""
,
err
}
server
,
err
:=
servers
.
Get
(
i
.
compute
,
instanceID
)
.
Extract
()
if
err
!=
nil
{
return
""
,
err
}
return
srvInstanceType
(
server
)
}
}
// InstanceType returns the type of the specified instance.
// InstanceType returns the type of the specified instance.
func
(
i
*
Instances
)
InstanceType
(
name
types
.
NodeName
)
(
string
,
error
)
{
func
(
i
*
Instances
)
InstanceType
(
name
types
.
NodeName
)
(
string
,
error
)
{
return
""
,
nil
srv
,
err
:=
getServerByName
(
i
.
compute
,
name
)
if
err
!=
nil
{
return
""
,
err
}
return
srvInstanceType
(
srv
)
}
func
srvInstanceType
(
srv
*
servers
.
Server
)
(
string
,
error
)
{
val
,
ok
:=
srv
.
Flavor
[
"name"
]
if
!
ok
{
return
""
,
fmt
.
Errorf
(
"flavor name not present in server info"
)
}
flavor
,
ok
:=
val
.
(
string
)
if
!
ok
{
return
""
,
fmt
.
Errorf
(
"flavor name is not a string"
)
}
return
flavor
,
nil
}
func
instanceIDFromProviderID
(
providerID
string
)
(
instanceID
string
,
err
error
)
{
parsedID
,
err
:=
url
.
Parse
(
providerID
)
if
err
!=
nil
{
return
""
,
err
}
if
parsedID
.
Scheme
!=
ProviderName
{
return
""
,
fmt
.
Errorf
(
"unrecognized provider %q"
,
parsedID
.
Scheme
)
}
return
parsedID
.
Host
,
nil
}
}
pkg/cloudprovider/providers/openstack/openstack_test.go
View file @
37951c33
...
@@ -18,9 +18,6 @@ package openstack
...
@@ -18,9 +18,6 @@ package openstack
import
(
import
(
"fmt"
"fmt"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions"
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
"os"
"os"
"reflect"
"reflect"
"sort"
"sort"
...
@@ -28,7 +25,11 @@ import (
...
@@ -28,7 +25,11 @@ import (
"testing"
"testing"
"time"
"time"
"github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/openstack/blockstorage/v1/apiversions"
"github.com/gophercloud/gophercloud/openstack/compute/v2/servers"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
...
@@ -449,3 +450,42 @@ func TestCinderAutoDetectApiVersion(t *testing.T) {
...
@@ -449,3 +450,42 @@ func TestCinderAutoDetectApiVersion(t *testing.T) {
}
}
}
}
}
}
func
TestInstanceIDFromProviderID
(
t
*
testing
.
T
)
{
testCases
:=
[]
struct
{
providerID
string
instanceID
string
fail
bool
}{
{
providerID
:
"openstack://7b9cf879-7146-417c-abfd-cb4272f0c935"
,
instanceID
:
"7b9cf879-7146-417c-abfd-cb4272f0c935"
,
fail
:
false
,
},
{
providerID
:
"7b9cf879-7146-417c-abfd-cb4272f0c935"
,
instanceID
:
""
,
fail
:
true
,
},
{
providerID
:
"other-provider://7b9cf879-7146-417c-abfd-cb4272f0c935"
,
instanceID
:
""
,
fail
:
true
,
},
}
for
_
,
test
:=
range
testCases
{
instanceID
,
err
:=
instanceIDFromProviderID
(
test
.
providerID
)
if
(
err
!=
nil
)
!=
test
.
fail
{
t
.
Errorf
(
"%s yielded `err != nil` as %t. expected %t"
,
test
.
providerID
,
(
err
!=
nil
),
test
.
fail
)
}
if
test
.
fail
{
continue
}
if
instanceID
!=
test
.
instanceID
{
t
.
Errorf
(
"%s yielded %s. expected %s"
,
test
.
providerID
,
instanceID
,
test
.
instanceID
)
}
}
}
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