public function ensureBackgroundWorkerIsCreated($integration_id) { $integration = Integration::find($integration_id); $integration->db_integration_id = $integration->id; $integrationJson = $integration->toJson(); Queue::push('ReauthenticateAndRefreshNodeList', array('message' => $integrationJson)); }
public function list_nodes() { $success = false; $integration = Integration::find($this->db_integration_id); $nodes = []; try { $client = \Aws\Ec2\Ec2Client::factory(array('key' => $integration->authorization_field_1, 'secret' => $integration->authorization_field_2, 'region' => 'us-east-1')); $res = $client->DescribeInstances(); $reservations = $res['Reservations']; $success = []; foreach ($reservations as $reservation) { $instances = $reservation['Instances']; foreach ($instances as $instance) { $interfaces = []; foreach ($instance['NetworkInterfaces'] as $network_interface) { array_push($interfaces, $network_interface['MacAddress']); } // Find out if we're part of a cluster $sp_cluster_id = null; try { foreach ($instance['Tags'] as $tag) { if ($tag['Key'] == 'elasticbeanstalk:environment-id') { $sp_cluster_id = $tag['Value']; } } } catch (Exception $e) { } array_push($nodes, array('service_provider_status' => $instance['State']['Name'], 'service_provider_base_image_id' => $instance['ImageId'], 'service_provider_id' => $instance['InstanceId'], 'private_dns_name' => $instance['PrivateDnsName'], 'public_dns_name' => $instance['PublicDnsName'], 'network_interfaces' => $interfaces, 'service_provider_cluster_id' => $sp_cluster_id, 'node_count' => $integration->nodes->count())); } } } catch (Exception $exception) { $nodes = false; } return $nodes; }
public function list_nodes($availability_zone_name, $availability_zone_friendly_name) { #$output = new Symfony\Component\Console\Output\ConsoleOutput(); #$output->writeln($availability_zone_name); $success = false; $integration = Integration::find($this->db_integration_id); $nodes = []; $client = \Aws\Ec2\Ec2Client::factory(array('key' => $integration->authorization_field_1, 'secret' => $integration->authorization_field_2, 'region' => $availability_zone_name)); $res = $client->DescribeInstances(); $reservations = $res['Reservations']; $success = []; #$output->writeln(print_r($reservations)); foreach ($reservations as $reservation) { $instances = $reservation['Instances']; foreach ($instances as $instance) { $platform = "Linux"; if (isset($instance['Platform'])) { $platform = ucfirst($instance['Platform']); } $interfaces = []; foreach ($instance['NetworkInterfaces'] as $network_interface) { array_push($interfaces, $network_interface['MacAddress']); } // Find out if we're part of a cluster. This feature is being deprecated. $sp_cluster_id = null; try { foreach ($instance['Tags'] as $tag) { if ($tag['Key'] == 'elasticbeanstalk:environment-id') { $sp_cluster_id = $tag['Value']; } } } catch (Exception $e) { } $all_ips = array(); foreach ($instance['NetworkInterfaces'] as $ni) { foreach ($ni['PrivateIpAddresses'] as $interface) { array_push($all_ips, isset($interface['PrivateIpAddress']) ? $interface['PrivateIpAddress'] : null, isset($interface['Association']['PublicIp']) ? $interface['Association']['PublicIp'] : null); } } array_push($nodes, array('service_provider_status' => $instance['State']['Name'], 'service_provider_base_image_id' => $instance['ImageId'], 'service_provider_id' => $instance['InstanceId'], 'private_dns_name' => $instance['PrivateDnsName'], 'public_dns_name' => $instance['PublicDnsName'], 'network_interfaces' => $interfaces, 'service_provider_cluster_id' => $sp_cluster_id, 'service_provider_ip_addresses' => $all_ips, 'availability_zone_friendly' => $availability_zone_friendly_name, 'availability_zone_name' => $availability_zone_name, 'platform' => $platform)); } } return $nodes; }
?> "> <div class="uk-grid uk-grid-collapse nos-title-row"> <div class="uk-width-1-6">Patch Risk</div> <div class="uk-width-1-6">Provider & Platform</div> <div class="uk-width-1-6">Physical Location</div> <div class="uk-width-1-6">Base Image</div> <div class="uk-width-1-6">Host Name</div> <div class="uk-width-1-6">Classifications</div> </div> <?php foreach ($page_data['managed_nodes'] as $node) { ?> <?php $integration = Integration::find($node->integration_id); ?> <?php $service_provider_cluster_id = empty($node->service_provider_cluster_id) ? 'None' : $node->service_provider_cluster_id; ?> <?php $service_provider_description = $node->description == " " ? 'None' : $node->description; ?> <div class="uk-grid uk-grid-collapse nos-row nos-activatable" rel="<?php echo $node->id; ?> " class="<?php echo $service_provider_cluster_id; ?> "> <div class="uk-width-1-6 node_status activatable">
public function list_nodes($availability_zone_name, $availability_zone_friendly_name) { $output = new Symfony\Component\Console\Output\ConsoleOutput(); $success = false; $integration = Integration::find($this->db_integration_id); $nodes = []; // We need to measure how often this actually matters. I wonder if UK_IDENTITY_ENDPOINT is only // for UK-based companies, or if it's needed to connect to Hong Kong. try { $client = new Rackspace(Rackspace::US_IDENTITY_ENDPOINT, array('username' => $integration->authorization_field_1, 'apiKey' => $integration->authorization_field_2)); } catch (Exception $e) { $client = new Rackspace(Rackspace::UK_IDENTITY_ENDPOINT, array('username' => $integration->authorization_field_1, 'apiKey' => $integration->authorization_field_2)); } $computeService = $client->computeService(null, $availability_zone_name, 'publicURL'); $serverList = $computeService->serverList(); foreach ($serverList as $server) { $server_ips = []; $private_dns = ""; $public_dns = ""; $server_status = ""; if (strtolower($server->status) == "active") { foreach ($server->addresses->public as $ip) { array_push($server_ips, $ip->addr); } foreach ($server->addresses->private as $ip) { array_push($server_ips, $ip->addr); } $public_dns = null; foreach ($server->addresses->public as $pubdns) { if (strlen($pubdns->addr) < 16) { $public_dns = $pubdns->addr; } } $private_dns = null; foreach ($server->addresses->private as $pdns) { if (strlen($pubdns->addr) < 16) { $private_dns = $pdns->addr; } } $server_status = 'running'; } else { switch (strtolower($server->status)) { case "active": $server_status = 'running'; break; case "build": $server_status = 'starting'; break; default: continue; } } // Get image info so we can get platform info $imageService = $client->imageService("cloudImages", $availability_zone_name); $imageInfo = $imageService->getImage($server->image->id); $platform = $imageInfo['os_type']; array_push($nodes, array('service_provider_status' => $server_status, 'service_provider_base_image_id' => $server->image->id, 'service_provider_id' => $server->id, 'private_dns_name' => $private_dns, 'public_dns_name' => $public_dns, 'network_interfaces' => [], 'service_provider_cluster_id' => null, 'service_provider_ip_addresses' => $server_ips, 'availability_zone_friendly' => $availability_zone_friendly_name, 'availability_zone_name' => $availability_zone_name, 'platform' => ucfirst($platform))); } // If nodes is empty, make attempt to list them through the legacy api. if (empty($nodes)) { $output->writeln("robby's account"); } return $nodes; }