예제 #1
0
 def __init__(self, connections, username, password, project_fq_name,
              inputs, cfgm_ip, openstack_ip):
     self.connections = connections
     httpclient = None
     self.heat_port = '8004'
     self.heat_api_version = '1'
     self.username = username
     self.password = password
     self.vnc_lib_h = self.connections.vnc_lib
     self.project_obj = self.vnc_lib_h.project_read(fq_name=project_fq_name)
     self.project_id = get_plain_uuid(self.project_obj.uuid)
     self.cfgm_ip = cfgm_ip
     insecure = bool(os.getenv('OS_INSECURE', True))
     self.openstack_ip = openstack_ip
     self.inputs = inputs
     self.openstack_ip = self.inputs.host_data[self.openstack_ip]['host_ip']
     self.obj = None
     self.heat_url = 'http://%s:%s/v1/%s' % (
         self.openstack_ip, self.heat_port, self.project_id)
     self.auth_url = inputs.auth_url
     self.kc = ksclient.Client(username=self.inputs.stack_user,
                               password=self.inputs.stack_password,
                               tenant_name=self.inputs.project_name,
                               auth_url=self.auth_url,
                               insecure=insecure)
     self.logger = self.inputs.logger
예제 #2
0
 def _reauthenticate_keystone(self):
     if self.token:
         self.keystone = keystoneclient.Client(token=self.token,
                                               endpoint=self.endpoint)
     else:
         self.keystone = ksclient.Client(
             username=self.inputs.stack_user,
             password=self.inputs.stack_password,
             tenant_name=self.inputs.project_name,
             auth_url=self.auth_url)
예제 #3
0
     def create_vm(self):
           connections = self.connections
           #credentials = self.credentials
           tenant_name = self.tenant_name
           name = self.vm_name
           image_id = self.image_id
           flavor_id = self.flavor_id
           sg_id = self.sg_id
           nw_id = self.vn_id
           auth_url = self.auth_url
           ukai_url = self.ukai_url
           env_admin = self.env_admin
           env_non_admin = self.env_non_admin
           env_vm = self.env_vm



           env_cli = env_vm + "export OS_TENANT_NAME=%s; " %(tenant_name)
           keystone = ks_client.Client(username=username, password=password,tenant_name=admin_tenant_name,auth_url=auth_url)

           if sg_id =='None':
                cmd = 'ukai client server create --name %s --image_id %s --network_id %s --flavor_id %s' %(name,image_id,nw_id,flavor_id)
                cmd = env_cli+cmd
                output = self.inputs.run_cmd_on_server(gc_host, cmd, username = gc_user_name , password = gc_user_pwd)

           else:
                cmd = 'ukai client server create --name %s --image_id %s --network_id %s --flavor_id %s --security_group_id %s' %(name,image_id,nw_id,flavor_id,sg_id)
                cmd = env_cli+cmd
                output = self.inputs.run_cmd_on_server(gc_host, cmd, username = gc_user_name , password = gc_user_pwd)

           

           #wait for vm to be UP before checking the uuid
           time.sleep(20)
           response, servers = keystone.get(ukai_url + "v1.0/servers")
           if not response.ok:
              print response.reason
              os.exit()

           for server in servers['servers']:
                print server['name']
                response, local_servers = keystone.get("%sv1.0/servers/%s/local_servers" % (ukai_url, server['id']))
                if not response.ok:
                     print response.reason

                for local_server in local_servers['local_servers']:
                     print local_server['status'], local_server['instance_id']
                     if local_server ['server']['name'] == name:
                        if local_server ['location']['address'] == "99.1.1.13":
                           uuid = local_server['instance_id']
                           break

           return uuid
예제 #4
0
    def __init__(self, username=None, password=None, tenant=None,
                 auth_url=None, token=None, endpoint=None,
                 insecure=True, region_name=None,
                 logger=None):

        self.logger = logger or contrail_logging.getLogger(__name__)
        if token:
            self.keystone = keystoneclient.Client(
                token=token, endpoint=endpoint)
        else:
            self.keystone = keystone_client.Client(
                username=username, password=password, tenant_name=tenant, auth_url=auth_url,
                insecure=insecure, region_name=region_name or 'RegionOne')
예제 #5
0
    def keystone_create_users(self, user_list):

        cleanup_cmds = []
        user_pass = {}
        user_role = {}
        user_set = set()
        role_set = set()
        for (n, p, r) in user_list:
            user_pass[n] = p
            user_role[n] = r
            user_set.add(n)
            role_set.add(r)

        auth_url = os.getenv('OS_AUTH_URL') or \
                             'http://' + self.inputs.openstack_ip + ':5000/v2.0'
        insecure = bool(os.getenv('OS_INSECURE', True))
        kc = ksclient.Client(username=self.inputs.stack_user,
                             password=self.inputs.stack_password,
                             tenant_name=self.inputs.project_name,
                             auth_url=auth_url,
                             insecure=insecure)
        users = set([user.name for user in kc.users.list()])
        roles = set([user.name for user in kc.roles.list()])
        tenants = kc.tenants.list()
        admin_tenant = [
            x for x in tenants if x.name == self.inputs.stack_tenant
        ][0]

        create_user_set = user_set - users
        create_role_set = role_set - roles

        # create missing roles
        for rolename in create_role_set:
            created_role = kc.roles.create(rolename)
            self.addCleanup(kc.roles.delete, created_role)

        # rebuild name->role dictionary from keystone
        role_dict = {}
        for role in kc.roles.list():
            role_dict[role.name] = role

        for name in create_user_set:
            user = kc.users.create(name,
                                   user_pass[name],
                                   '',
                                   tenant_id=admin_tenant.id)
            self.addCleanup(kc.users.delete, user)
            kc.roles.add_user_role(user, role_dict[user_role[name]],
                                   admin_tenant)
            self.addCleanup(kc.roles.remove_user_role, user,
                            role_dict[user_role[name]], admin_tenant)
예제 #6
0
    def __init__(self,
                 username=None,
                 password=None,
                 tenant=None,
                 auth_url=None,
                 token=None,
                 endpoint=None,
                 insecure=True):

        if token:
            self.keystone = keystoneclient.Client(token=token,
                                                  endpoint=endpoint)
        else:
            self.keystone = keystone_client.Client(username=username,
                                                   password=password,
                                                   tenant_name=tenant,
                                                   auth_url=auth_url,
                                                   insecure=insecure)
예제 #7
0
 def __init__(self,
              connections,
              username=None,
              password=None,
              tenant=None,
              role='admin',
              token=None,
              endpoint=None):
     self.inputs = connections.inputs
     self.connections = connections
     self.logger = self.inputs.logger
     if self.inputs.orchestrator == 'vcenter':
         # No concept of user in vcenter, However we satisfy the test infra
         # with dummy fixture objects
         return
     insecure = bool(os.getenv('OS_INSECURE', True))
     if not self.inputs.ha_setup:
         self.auth_url = os.getenv('OS_AUTH_URL') or \
             'http://%s:5000/v2.0' % (self.inputs.openstack_ip)
     else:
         self.auth_url = os.getenv('OS_AUTH_URL') or \
             'http://%s:5000/v2.0' % (self.inputs.auth_ip)
     self.already_present = False
     self.username = username
     self.password = password
     self.tenant = tenant
     self.role = role
     self.email = str(username) + "@example.com"
     self.token = token
     self.endpoint = endpoint
     self.verify_is_run = False
     if self.token:
         self.keystone = keystoneclient.Client(token=self.token,
                                               endpoint=self.endpoint)
     else:
         self.keystone = ksclient.Client(
             username=self.inputs.stack_user,
             password=self.inputs.stack_password,
             tenant_name=self.inputs.project_name,
             auth_url=self.auth_url,
             insecure=insecure)
예제 #8
0
 def get_client(self, scope='domain'):
     return ks_client.Client(version=self.version,
                             session=self.get_session(scope),
                             auth_url=self.auth_url,
                             region_name=self.region_name)
예제 #9
0
 def reauth(self):
     self.keystone = ksclient.Client(username=self.user,
                                     password=self.passwd,
                                     tenant_name=self.project,
                                     auth_url=self.auth_url,
                                     insecure=self.insecure)