def task_add_content_migration_meta_data(self, user_id, data): user = User.query.get(user_id) softlayer_clouds = user.project.softlayer_clouds.filter_by( status=VALID).all() for cloud in softlayer_clouds: client = create_client_from_env(cloud.username, decrypt_api_key(cloud.api_key)) vs_manger = VSManager(client) try: vsi_id = vs_manger.list_instances(public_ip=data["ip"])[0]["id"] break except (KeyError, IndexError): vsi_id = None if not vsi_id: LOGGER.info( f"VSI Not Found for public IP: {data['ip']} against user: {user_id}" ) return cm_object = CMModels.query.filter_by(softlayer_vsi_id=vsi_id).first() if cm_object: cm_object.cm_meta_data = data else: cm_object = CMModels(softlayer_vsi_id=vsi_id, cm_meta_data=data) doosradb.session.add(cm_object) doosradb.session.commit() cm_object = CMModels.query.filter_by(softlayer_vsi_id=vsi_id).first() if cm_object: cm_object.cm_meta_data = data else: cm_object = CMModels(softlayer_vsi_id=vsi_id, cm_meta_data=data) doosradb.session.add(cm_object) doosradb.session.commit() LOGGER.info(f"VSI: {vsi_id} meta data saved for user: {user_id}")
def execute(self, args): vsi = VSManager(self.client) tags = None if args.get('--tags'): tags = [tag.strip() for tag in args.get('--tags').split(',')] guests = vsi.list_instances(hourly=args.get('--hourly'), monthly=args.get('--monthly'), hostname=args.get('--hostname'), domain=args.get('--domain'), cpus=args.get('--cpu'), memory=args.get('--memory'), datacenter=args.get('--datacenter'), nic_speed=args.get('--network'), tags=tags) table = Table([ 'id', 'datacenter', 'host', 'cores', 'memory', 'primary_ip', 'backend_ip', 'active_transaction', ]) table.sortby = args.get('--sortby') or 'host' for guest in guests: guest = NestedDict(guest) table.add_row([ guest['id'], guest['datacenter']['name'] or blank(), guest['fullyQualifiedDomainName'], guest['maxCpu'], mb_to_gb(guest['maxMemory']), guest['primaryIpAddress'] or blank(), guest['primaryBackendIpAddress'] or blank(), active_txn(guest), ]) return table
def getInstances(tag): vsManager = VSManager(client) instances = vsManager.list_instances(tags=[tag]) return instances
def service_instances(): import uuid, os, yaml, json, docker, requests, traceback from SoftLayer import VSManager, Client id = request.args with open('/settings_softlayer.yml', 'r') as f: yaml_settings = yaml.load(f) json_settings = json.dumps(yaml_settings) data = json.loads(json_settings) sl_api_user = data['pattern']['api_ep'][0]['user'] sl_api_key = data['pattern']['api_ep'][0]['api_key'] client = Client(username=sl_api_user, api_key=sl_api_key) vs = VSManager(client) with open('/softlayer.json', 'r') as json_content_read: build_content_read = json.load(json_content_read) json_content_read.close() build_content_read['hostname'] = id[0] with open('/softlayer.json', 'w') as json_content_write: json_content_write.write(json.dumps(build_content_read)) json_content_write.close() with open('/softlayer.json') as json_content: build_content = json.load(json_content) if len(id) == 1: if request.env.request_method == "PUT": try: client['Virtual_Guest'].createObject(build_content) response = { "dashboard_url": id } return response except: print traceback.format_exc() if request.env.request_method == "DELETE": try: for i in vs.list_instances(): if str(i['hostname']) == str(id[0]): virtual_server_id = i['id'] vs.cancel_instance(virtual_server_id) response = {} return response except: raise HTTP(410, "Gone") response = {} return response if len(id) > 1: if request.env.request_method == "PUT": try: for i in vs.list_instances(): if str(i['hostname']) == str(id[0]): virtual_server_id = i['id'] ip_addr = vs.get_instance(virtual_server_id)['primaryIpAddress'] #username = vs.get_instance(virtual_server_id)['networkComponents']['operatingSystem']['passwords'][0]['username'] #password = vs.get_instance(virtual_server_id)['networkComponents']['operatingSystem']['passwords'][0]['password'] #response = {"credentials": [{"ip_address": ip_addr},{"username": username}, {"password": password}]} response = {"credentials": {"ip_address": ip_addr, "port": "11211"}} return response except: return traceback.format_exc() #raise HTTP(404, "Not Found") #response = {} #return response if request.env.request_method == "DELETE": response = {} return response
def getInstances(): vsManager = VSManager(client) instances = vsManager.list_instances(tags=tags,datacenter=datacenter) return instances
def getInstances(tag): vsManager = VSManager(client) instances = vsManager.list_instances(tags=[tag]) print json.dumps(instances, sort_keys=True, indent=4) return instances
def getInstances(): vsManager = VSManager(client) instances = vsManager.list_instances(tags=tags, datacenter=datacenter) return instances
class VSTests(unittest.TestCase): def setUp(self): self.client = FixtureClient() self.vs = VSManager(self.client) def test_list_instances(self): mcall = call(mask=ANY, filter={}) service = self.client['Account'] list_expected_ids = [100, 104] hourly_expected_ids = [104] monthly_expected_ids = [100] results = self.vs.list_instances(hourly=True, monthly=True) service.getVirtualGuests.assert_has_calls(mcall) for result in results: self.assertIn(result['id'], list_expected_ids) result = self.vs.list_instances(hourly=False, monthly=False) service.getVirtualGuests.assert_has_calls(mcall) for result in results: self.assertIn(result['id'], list_expected_ids) results = self.vs.list_instances(hourly=False, monthly=True) service.getMonthlyVirtualGuests.assert_has_calls(mcall) for result in results: self.assertIn(result['id'], monthly_expected_ids) results = self.vs.list_instances(hourly=True, monthly=False) service.getHourlyVirtualGuests.assert_has_calls(mcall) for result in results: self.assertIn(result['id'], hourly_expected_ids) def test_list_instances_with_filters(self): self.vs.list_instances( hourly=True, monthly=True, tags=['tag1', 'tag2'], cpus=2, memory=1024, hostname='hostname', domain='example.com', local_disk=True, datacenter='dal05', nic_speed=100, public_ip='1.2.3.4', private_ip='4.3.2.1', ) service = self.client['Account'] service.getVirtualGuests.assert_has_calls(call( filter={ 'virtualGuests': { 'datacenter': { 'name': {'operation': '_= dal05'}}, 'domain': {'operation': '_= example.com'}, 'tagReferences': { 'tag': {'name': { 'operation': 'in', 'options': [{ 'name': 'data', 'value': ['tag1', 'tag2']}]}}}, 'maxCpu': {'operation': 2}, 'localDiskFlag': {'operation': True}, 'maxMemory': {'operation': 1024}, 'hostname': {'operation': '_= hostname'}, 'networkComponents': {'maxSpeed': {'operation': 100}}, 'primaryIpAddress': {'operation': '_= 1.2.3.4'}, 'primaryBackendIpAddress': {'operation': '_= 4.3.2.1'} }}, mask=ANY, )) def test_resolve_ids_ip(self): service = self.client['Account'] _id = self.vs._get_ids_from_ip('172.16.240.2') self.assertEqual(_id, [100, 104]) _id = self.vs._get_ids_from_ip('nope') self.assertEqual(_id, []) # Now simulate a private IP test service.getVirtualGuests.side_effect = [[], [{'id': 99}]] _id = self.vs._get_ids_from_ip('10.0.1.87') self.assertEqual(_id, [99]) def test_resolve_ids_hostname(self): _id = self.vs._get_ids_from_hostname('vs-test1') self.assertEqual(_id, [100, 104]) def test_get_instance(self): result = self.vs.get_instance(100) self.client['Virtual_Guest'].getObject.assert_called_once_with( id=100, mask=ANY) self.assertEqual(Virtual_Guest.getObject, result) def test_get_create_options(self): results = self.vs.get_create_options() self.assertEqual(Virtual_Guest.getCreateObjectOptions, results) def test_cancel_instance(self): self.vs.cancel_instance(1) self.client['Virtual_Guest'].deleteObject.assert_called_once_with(id=1) def test_reload_instance(self): post_uri = 'http://test.sftlyr.ws/test.sh' self.vs.reload_instance(1, post_uri=post_uri, ssh_keys=[1701]) service = self.client['Virtual_Guest'] f = service.reloadOperatingSystem f.assert_called_once_with('FORCE', {'customProvisionScriptUri': post_uri, 'sshKeyIds': [1701]}, id=1) @patch('SoftLayer.managers.vs.VSManager._generate_create_dict') def test_create_verify(self, create_dict): create_dict.return_value = {'test': 1, 'verify': 1} self.vs.verify_create_instance(test=1, verify=1) create_dict.assert_called_once_with(test=1, verify=1) f = self.client['Virtual_Guest'].generateOrderTemplate f.assert_called_once_with({'test': 1, 'verify': 1}) @patch('SoftLayer.managers.vs.VSManager._generate_create_dict') def test_create_instance(self, create_dict): create_dict.return_value = {'test': 1, 'verify': 1} self.vs.create_instance(test=1, verify=1) create_dict.assert_called_once_with(test=1, verify=1) self.client['Virtual_Guest'].createObject.assert_called_once_with( {'test': 1, 'verify': 1}) def test_generate_os_and_image(self): self.assertRaises( ValueError, self.vs._generate_create_dict, cpus=1, memory=1, hostname='test', domain='example.com', os_code=1, image_id=1, ) def test_generate_missing(self): self.assertRaises(ValueError, self.vs._generate_create_dict) self.assertRaises(ValueError, self.vs._generate_create_dict, cpus=1) def test_generate_basic(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, } self.assertEqual(data, assert_data) def test_generate_monthly(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", hourly=False, ) assert_data = { 'hourlyBillingFlag': False, 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", } self.assertEqual(data, assert_data) def test_generate_image_id(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', image_id="45", ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'blockDeviceTemplateGroup': {"globalIdentifier": "45"}, 'hourlyBillingFlag': True, } self.assertEqual(data, assert_data) def test_generate_dedicated(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", dedicated=True, ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'dedicatedAccountHostOnlyFlag': True, } self.assertEqual(data, assert_data) def test_generate_datacenter(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", datacenter="sng01", ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'datacenter': {"name": 'sng01'}, } self.assertEqual(data, assert_data) def test_generate_public_vlan(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", public_vlan=1, ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'primaryNetworkComponent': {"networkVlan": {"id": 1}}, } self.assertEqual(data, assert_data) def test_generate_private_vlan(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", private_vlan=1, ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'primaryBackendNetworkComponent': {"networkVlan": {"id": 1}}, } self.assertEqual(data, assert_data) def test_generate_userdata(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", userdata="ICANHAZVSI", ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'userData': [{'value': "ICANHAZVSI"}], } self.assertEqual(data, assert_data) def test_generate_network(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", nic_speed=9001, ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'networkComponents': [{'maxSpeed': 9001}], } self.assertEqual(data, assert_data) def test_generate_private_network_only(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", nic_speed=9001, private=True ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'privateNetworkOnlyFlag': True, 'hourlyBillingFlag': True, 'networkComponents': [{'maxSpeed': 9001}], } self.assertEqual(data, assert_data) def test_generate_post_uri(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", post_uri='https://example.com/boostrap.sh', ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'postInstallScriptUri': 'https://example.com/boostrap.sh', } self.assertEqual(data, assert_data) def test_generate_sshkey(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", ssh_keys=[543], ) assert_data = { 'startCpus': 1, 'maxMemory': 1, 'hostname': 'test', 'domain': 'example.com', 'localDiskFlag': True, 'operatingSystemReferenceCode': "STRING", 'hourlyBillingFlag': True, 'sshKeys': [{'id': 543}], } self.assertEqual(data, assert_data) def test_generate_no_disks(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING" ) self.assertEqual(data.get('blockDevices'), None) def test_generate_single_disk(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", disks=[50] ) assert_data = { 'blockDevices': [ {"device": "0", "diskImage": {"capacity": 50}}] } self.assertTrue(data.get('blockDevices')) self.assertEqual(data['blockDevices'], assert_data['blockDevices']) def test_generate_multi_disk(self): data = self.vs._generate_create_dict( cpus=1, memory=1, hostname='test', domain='example.com', os_code="STRING", disks=[50, 70, 100] ) assert_data = { 'blockDevices': [ {"device": "0", "diskImage": {"capacity": 50}}, {"device": "2", "diskImage": {"capacity": 70}}, {"device": "3", "diskImage": {"capacity": 100}}] } self.assertTrue(data.get('blockDevices')) self.assertEqual(data['blockDevices'], assert_data['blockDevices']) def test_change_port_speed_public(self): vs_id = 1 speed = 100 self.vs.change_port_speed(vs_id, True, speed) service = self.client['Virtual_Guest'] f = service.setPublicNetworkInterfaceSpeed f.assert_called_once_with(speed, id=vs_id) def test_change_port_speed_private(self): vs_id = 2 speed = 10 self.vs.change_port_speed(vs_id, False, speed) service = self.client['Virtual_Guest'] f = service.setPrivateNetworkInterfaceSpeed f.assert_called_once_with(speed, id=vs_id) def test_edit(self): # Test editing user data service = self.client['Virtual_Guest'] self.vs.edit(100, userdata='my data') service.setUserMetadata.assert_called_once_with(['my data'], id=100) # Now test a blank edit self.assertTrue(self.vs.edit, 100) # Finally, test a full edit args = { 'hostname': 'new-host', 'domain': 'new.sftlyr.ws', 'notes': 'random notes', } self.vs.edit(100, **args) service.editObject.assert_called_once_with(args, id=100) def test_captures(self): archive = self.client['Virtual_Guest'].createArchiveTransaction # capture only the OS disk self.vs.capture(1, 'a') archive.called_once_with('a', [{"device": 0}], "", id=1) archive.reset() # capture all the disks, minus the swap # make sure the data is carried along with it self.vs.capture(1, 'a', additional_disks=True) archive.called_once_with('a', [{"device": 0, "uuid": 1}, {"device": 2, "uuid": 2}], "", id=1) def test_upgrade(self): # Testing Upgrade orderClient = self.client['Product_Order'] # test single upgrade self.vs.upgrade(1, cpus=4, public=False) orderClient.placeOrder.called_once_with(1, cpus=4, public=False) # Now test a blank upgrade self.vs.upgrade(1) self.assertTrue(self.vs.upgrade, 1) # Testing all parameters Upgrade self.vs.upgrade(1, cpus=4, memory=2, nic_speed=1000, public=True) args = {'cpus': 4, 'memory': 2, 'nic_speed': 1000, 'public': 1000} orderClient.placeOrder.called_once_with(1, **args) def test_get_item_id_for_upgrade(self): item_id = 0 package_items = self.client['Product_Package'].getItems(id=46) for item in package_items: if ((item['categories'][0]['id'] == 3) and (item.get('capacity') == '2')): item_id = item['prices'][0]['id'] break self.assertEqual(1133, item_id)
def getInstances(tag): vsManager = VSManager(client) instances = vsManager.list_instances(tags = [tag]) return instances
def getInstances(tag): vsManager = VSManager(client) instances = vsManager.list_instances(tags = [tag]) print json.dumps(instances, sort_keys=True, indent=4) return instances