Pavlo Shchelokovskyy a656b25d03 Remove deprecated Q_PLUGIN_EXTRA_CONF_* vars
Change-Id: I175dae2324cd1e486077edc5dd4b93989f4d7b02
2017-01-10 22:35:35 +00:00

122 lines
4.2 KiB
Python

# Copyright 2015 Mirantis, Inc.
#
# 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.
import argparse
import os
import sys
from keystoneauth1 import identity
from keystoneauth1 import session
from neutronclient.v2_0 import client
parser = argparse.ArgumentParser(description='GenericSwitch functional test')
parser.add_argument('--switch_name',
type=str,
required=True,
help='Name of the switch')
parser.add_argument('--switch_id',
type=str,
required=True,
help='Switch id to create a local_link_information with')
parser.add_argument('--port',
type=str,
required=True,
help='OVS port to manage')
parser.add_argument('--network',
type=str,
default='private',
help='Neutron network name to create port in')
parser.add_argument('--auth-url',
type=str,
default='http://127.0.0.1:5000/v3',
help='Keystone auth URL endpoint')
parser.add_argument('--username',
type=str,
default='admin',
help='Keystone user name, must have admin access')
parser.add_argument('--password',
type=str,
default='admin',
help='Keystone user password, must have admin access')
parser.add_argument('--project-name',
type=str,
default='admin',
help='Keystone user project name, must have admin access')
parser.add_argument('--user-domain-id',
type=str,
help='Keystone user domain ID')
parser.add_argument('--project-domain-id',
type=str,
help='Keystone project domain ID')
opts = parser.parse_args()
auth_params = {
"username": os.environ.get("OS_USERNAME", opts.username),
"password": os.environ.get("OS_PASSWORD", opts.password),
"tenant_name": os.environ.get("OS_PROJECT_NAME", opts.project_name),
}
user_domain_id = os.environ.get("OS_USER_DOMAIN_ID", opts.user_domain_id)
if user_domain_id:
auth_params["user_domain_id"] = user_domain_id
project_domain_id = os.environ.get("OS_PROJECT_DOMAIN_ID",
opts.project_domain_id)
if project_domain_id:
auth_params["project_domain_id"] = project_domain_id
auth = identity.Password(os.environ.get("OS_AUTH_URL", opts.auth_url),
**auth_params)
try:
sess = session.Session(auth=auth)
nc = client.Client(session=sess)
network_name = opts.network
network = nc.list_networks(name=network_name)['networks'][0]
print(network['provider:segmentation_id'])
create_body = {
'port':
{'network_id': network['id'],
'admin_state_up': True,
'name': 'generic_switch_test'
}
}
port_id = nc.create_port(create_body)['port']['id']
host = nc.list_agents(
agent_type='Open vSwitch agent')['agents'][0]['host']
update_body = {
'port': {
'device_owner': 'baremetal:none',
'device_id': 'fake-instance-uuid',
'admin_state_up': True,
'binding:vnic_type': 'baremetal',
'binding:host_id': host,
'binding:profile': {
'local_link_information': [{
'switch_info': opts.switch_name,
'switch_id': opts.switch_id,
'port_id': opts.port}]
}
}
}
nc.update_port(port_id, update_body)
except Exception as exc:
msg = "Failed to create and update port, exception is %s" % exc
sys.exit(msg)