public void AddInterfaceAttachmentTest_2Times_Sequencely()
        {
            var          osm = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss  = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.ShutOff);

            if (ss != null)
            {
                Server server = osm.GetServer(ss.Id);
                Trace.WriteLine(string.Format("s.Status : {0}", server.Status));
                Trace.WriteLine(string.Format("s.VMState : {0}", server.VMState));

                string portId = GetInterfaceAttachmentIdByTesterName();

                // the first time
                InterfaceAttachment i = osm.AddInterfaceAttachment(ss.Id, portId);
                Assert.IsNotNull(i);
                Assert.IsNotNull(i.PortId);
                Assert.IsNotNull(i.NetId);
                Assert.IsNotNull(i.MacAddr);
                Assert.IsNotNull(i.PortState);
                Trace.WriteLine(string.Format("interface attachment added : {0}", DateTime.Now));
                Trace.WriteLine(string.Format("PortId : {0}, NetId : {1}, MacAddress : {2}, PortState : {3}", i.PortId, i.NetId, i.MacAddr, i.PortState));

                // the second time, expected BadServiceRequestException but ItemNotFundException occurs
                AssertCatch <BadServiceRequestException>(() => i = osm.AddInterfaceAttachment(ss.Id, portId));

                // delete interface
                Assert.IsTrue(osm.DeleteInterfaceAttachment(ss.Id, i.PortId));
            }
        }
Ejemplo n.º 2
0
        public void ListVolumesDetailsTest()
        {
            var os      = new OpenStackMember(UserName, Password, TenantName, TenantId); // with tenant
            var volumes = os.ListVolumesDetails();

            Assert.IsNotNull(volumes);
        }
        public void SetNotificationTest()
        {
            Trace.WriteLine("on ticket");

            var os            = new OpenStackMember(UserName, Password, TenantName); // with tenant
            var notifications = os.ListNotifications();

            Assert.IsNotNull(notifications);
            foreach (var n in notifications)
            {
                var notification = os.GetNotification(n.NotificationCode);
                var prevStatus   = notification.ReadStatus;

                notification = os.SetNotification(n.NotificationCode, "Unread");
                Assert.AreEqual(notification.ReadStatus, "Unread");

                notification = os.SetNotification(n.NotificationCode, "ReadTitleOnly");
                Assert.AreEqual(notification.ReadStatus, "ReadTitleOnly");

                notification = os.SetNotification(n.NotificationCode, "Read");
                Assert.AreEqual(notification.ReadStatus, "Read");

                notification = os.SetNotification(n.NotificationCode, prevStatus);

                notification = os.GetNotification(n.NotificationCode);
                Assert.AreEqual(notification.ReadStatus, prevStatus);
            }
        }
        public void ListLBMembersTest()
        {
            var os      = new OpenStackMember(UserName, Password, TenantName, TenantId);
            var members = os.ListLBMembers();

            Assert.IsNotNull(members);
        }
        public void ListNetworkSecurityRulesTest()
        {
            var os    = new OpenStackMember(UserName, Password, TenantName, TenantId);
            var rules = os.ListNetworkSecurityGroupRules();

            Assert.IsNotNull(rules);
        }
        public void CreateNetworkSecurityRuleTest()
        {
            string name        = TesterName;
            string description = null;
            var    os          = new OpenStackMember(UserName, Password, TenantName, TenantId);
            var    group       = os.CreateNetworkSecurityGroup(name, description);

            Assert.IsNotNull(group);
            try
            {
                string direction      = "ingress"; // "ingress" or "egress"
                string etherType      = "IPv4";    // "IPv4" or "IPv6"
                string portRangeMin   = null;
                string portRangeMax   = null;
                string protocol       = null;
                string remoteGroupId  = null;
                string remoteIpPrefix = null;

                var rule = os.CreateNetworkSecurityGroupRule(group.Id, direction, etherType, portRangeMin, portRangeMax, protocol, remoteGroupId, remoteIpPrefix);
                Assert.IsNotNull(rule);

                Assert.IsTrue(os.DeleteNetworkSecurityGroupRule(rule.Id));
            }
            finally
            {
                Assert.IsTrue(os.DeleteNetworkSecurityGroup(group.Id));
            }
        }
        public void CreatePoolTest()
        {
            var osm = new OpenStackMember(UserName, Password, TenantName, TenantId);

            // create pool
            string pool_name           = GetTesterNameByEnv();
            string TokyoLBaas_subnetId = GetSubnetIdByRegion(region: null);

            string[] lbMethods = { "ROUND_ROBIN", "LEAST_CONNECTIONS" };
            string   protocol  = "TCP";

            foreach (var lbMethod in lbMethods)
            {
                var p = osm.CreatePool(pool_name, TokyoLBaas_subnetId, lbMethod, protocol);
                try
                {
                    Assert.IsNotNull(p);
                    Trace.WriteLine(string.Format("pool Name : {0}", p.Name));
                    Trace.WriteLine(string.Format("pool Id : {0}", p.Id));
                    Trace.WriteLine(string.Format("pool Protocol : {0}", p.Protocol));
                    Trace.WriteLine(string.Format("pool Description : {0}", p.Description));
                    Trace.WriteLine(string.Format("pool LbMethod : {0}", p.LbMethod));
                    Trace.WriteLine(string.Format("pool HealthMonitors : {0}", string.Join(",", p.HealthMonitors)));
                    Trace.WriteLine(string.Format("pool Members : {0}", string.Join(",", p.Members)));
                }
                finally
                {
                    Assert.IsTrue(osm.DeletePool(p.Id));
                }
            }
        }
        public void StopServerTest()
        {
            var          osm    = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss     = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.Active);
            Server       server = osm.GetServer(ss.Id);

            // check server status
            if (server.VMState == VirtualMachineState.Stopped)
            {
                if (server.Status != ServerState.Reboot)
                {
                    osm.StartServer(server.Id);
                }
                // wait for activate
                osm.ServersProvider.WaitForServerActive(server.Id);
                Trace.WriteLine(String.Format("server activated : {0}", DateTime.Now));

                // stop server
                bool b = osm.StopServer(server.Id);
                Assert.IsTrue(b);
                var vmState = server.VMState;
                Trace.WriteLine(string.Format("server stopped : {0}", DateTime.Now));
            }
            else
            {
                Trace.WriteLine(string.Format("server.Status : {0}", server.Status));
                Trace.WriteLine(string.Format("server.VMState : {0}", server.VMState));
            }
        }
        public void StopServerTest_Stop_VM_Not_Exist()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);

            // expect ItemNotFoundException
            bool b = os.StopServer(InvalidId);
        }
        public void DeleteServerTest_Delete_Server_Not_Exist()
        {
            var os = new OpenStackMember(UserName, Password, TenantName);

            // expect ItemNotFoundException
            bool b = os.DeleteServer(InvalidId);
        }
        public void StartServerTest()
        {
            var          osm    = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss     = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.Active);
            Server       server = osm.GetServer(ss.Id);

            // check server status
            if (server.Status == ServerState.Active && server.VMState == VirtualMachineState.Active)
            {
                osm.StopServer(server.Id);
                // wait for stop
                WaitForVMState(server.Id, new[] { VirtualMachineState.Stopped }, new[] { VirtualMachineState.Error });
                Trace.WriteLine(String.Format("server stopped : {0}", DateTime.Now));

                // start server
                bool b = osm.StartServer(server.Id);
                Assert.IsTrue(b);
                Trace.WriteLine(string.Format("server started : {0}", DateTime.Now));
            }
            else
            {
                Trace.WriteLine(string.Format("server.Status : {0}", server.Status));
                Trace.WriteLine(string.Format("server.VMState : {0}", server.VMState));
            }
        }
        public void GetServerTest_VM_Invalid()
        {
            var os = new OpenStackMember(UserName, Password, TenantName);

            // expect ItemNotFoundException
            Server server = os.GetServer(InvalidId);
        }
        public void GetFlavorTest_Get_Flavor_Invalid()
        {
            var os = new OpenStackMember(UserName, Password, TenantName);

            // expect ItemNotFoundException
            var f = os.GetFlavor(InvalidId);
        }
        private Server WaitForVMState(string serverId, VirtualMachineState[] expectedVMStates, VirtualMachineState[] errorVMStates, int refreshCount = 600, TimeSpan?refreshDelay = null)
        {
            refreshDelay = refreshDelay ?? TimeSpan.FromMilliseconds(2400);

            var    os            = new OpenStackMember(UserName, Password, TenantName);
            Server serverDetails = os.GetServer(serverId);

            Func <bool> exitCondition = () => serverDetails.TaskState == null && (expectedVMStates.Contains(serverDetails.VMState) || errorVMStates.Contains(serverDetails.VMState));
            int         count         = 0;
            int         exitCount     = exitCondition() ? 1 : 0;

            while (exitCount < 3 && count < refreshCount)
            {
                System.Threading.Thread.Sleep(refreshDelay ?? TimeSpan.FromMilliseconds(2400));
                serverDetails = os.GetServer(serverId);
                count++;
                if (exitCondition())
                {
                    exitCount++;
                }
                else
                {
                    exitCount = 0;
                }
            }

            if (errorVMStates.Contains(serverDetails.VMState))
            {
                throw new ServerEnteredErrorStateException(serverDetails.Status);
            }

            return(serverDetails);
        }
        public void DeleteKeypairTest_Delete_Keypair_Not_Exist()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);

            // expect ItemNotFoundException
            os.DeleteKeypair(InvalidItemName);
        }
        public void RebuildServerTest_FlavorId_Invalid()
        {
            var          os = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss = GetServerByNameOrCreate(TesterName);
            Server       s  = os.GetServer(ss.Id);

            try
            {
                Server rebuiltserver = os.RebuildServer(s.Id, s.Image.Id, "newPassword");
            }
            catch (ServiceConflictException sce)
            {
                if (sce.Message.Equals("Cannot 'rebuild' while instance is in task_state reboot_started"))
                {
                    // no error for this is what expected.
                    Trace.WriteLine(string.Format("s.Status : {0}", s.Status));
                    Trace.WriteLine(string.Format("s.VMState : {0}", s.VMState));
                    return;
                }

                // in other cases,
                throw;
            }

            s = os.ServersProvider.WaitForServerActive(s.Id, 100);
        }
        public void GetInterfaceAttachmentTest()
        {
            var          osm = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss  = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.Active);

            IEnumerable <InterfaceAttachment> interfaces = osm.ListInterfaceAttachments(ss.Id);

            Assert.IsNotNull(interfaces);
            Trace.WriteLine(string.Format("InterfaceAttachments count : {0}", interfaces.Count()));

            if (interfaces.Count() == 0)
            {
                osm.AddInterfaceAttachment(ss.Id, GetInterfaceAttachmentIdByTesterName());
            }

            foreach (var _i in interfaces)
            {
                InterfaceAttachment i = osm.GetInterfaceAttachment(ss.Id, _i.PortId);
                Assert.IsNotNull(i);
                Assert.IsNotNull(i.PortId);
                Assert.IsNotNull(i.NetId);
                Assert.IsNotNull(i.MacAddr);
                Assert.IsNotNull(i.PortState);

                Trace.WriteLine(string.Format("PortId : {0}, NetId : {1}, MacAddress : {2}, PortState : {3}", i.PortId, i.NetId, i.MacAddr, i.PortState));
            }
        }
        public void RevertResizeServerTest()
        {
            var          osm = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss  = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.ShutOff);

            if (ss != null)
            {
                Server s = osm.GetServer(ss.Id);
                //if (s.Status.Name != "SHUTOFF")
                //    os.StopServer(s.Id);

                if (s.Status != ServerState.VerifyResize)
                {
                    IEnumerable <Flavor> flavors = osm.ListFlavors();
                    Flavor flavor1g = flavors.Where <Flavor>(x => x.Name == "g-1gb").First <Flavor>();
                    Flavor flavor2g = flavors.Where <Flavor>(x => x.Name == "g-2gb").First <Flavor>();
                    osm.ResizeServer(s.Id, (s.Flavor.Id == flavor1g.Id ? flavor2g.Id : flavor1g.Id), DiskConfiguration.FromName("AUTO"));
                    Trace.WriteLine(String.Format("server requested a resizing : {0}", DateTime.Now));
                    Trace.WriteLine(String.Format("FlavorId : {0}", s.Flavor.Id));
                    // wait for request
                    s = osm.ServersProvider.WaitForServerState(s.Id, ServerState.VerifyResize, new[] { ServerState.Error, ServerState.Unknown, ServerState.Suspended });
                    Trace.WriteLine(String.Format("server status changed to {0} : {1}", s.Status, DateTime.Now));
                }

                // resize
                bool b = osm.RevertResizeServer(s.Id);
                Assert.IsTrue(b);
                Trace.WriteLine(String.Format("server reverted a resizing : {0}", DateTime.Now));

                // wait for activate
                s = osm.ServersProvider.WaitForServerActive(s.Id);
                Trace.WriteLine(String.Format("server activated : {0}", DateTime.Now));
            }
        }
        public void AddSubnetForLbTest()
        {
            var os     = new OpenStackMember(UserName, Password, TenantName, TenantId);
            var subnet = os.AddSubnetForLb();

            Assert.IsNotNull(subnet);
        }
        public void GetVncConsoleTest_VM_Invalid()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);

            // expect ItemNotFoundException
            VncConsole v = os.GetVncConsole(InvalidId);
        }
        public void UpdatePoolTest()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);
            // string tenantId = os.IdentityProvider.GetToken(os.Identity).Tenant.Id;

            // create pool
            string pool_name           = GetTesterNameByEnv();
            string TokyoLBaas_subnetId = GetSubnetIdByRegion(region: null);

            string[] lbMethods = { "ROUND_ROBIN", "LEAST_CONNECTIONS" };
            string   protocol  = "TCP";

            foreach (var lbMethod in lbMethods)
            {
                var p = os.CreatePool(pool_name, TokyoLBaas_subnetId, lbMethod, protocol);
                Trace.WriteLine(string.Format("pool Status : {0}", p.Status));
                System.Threading.Thread.Sleep(1000 * 10);
                Trace.WriteLine(string.Format("pool Status : {0}", p.Status));
                try
                {
                    foreach (var newLbMethod in lbMethods)
                    {
                        os.UpdatePool(p.Id, "newName", newLbMethod);

                        // not tested yet.
                        //os.UpdatePool(p.Id, "日本語", lbMethod);
                        //os.UpdatePool(p.Id, "//", lbMethod);
                    }
                }
                finally
                {
                    Assert.IsTrue(os.DeletePool(p.Id));
                }
            }
        }
        public void ListServerSecurityGroupTest_InvalidId()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);

            // expect ItemNotFoundException
            IEnumerable <ServerSecurityGroup> groups = os.ListServerSecurityGroups(InvalidId);
        }
        public void UpdateHealthMonitorTest()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);

            string monitorType   = "TCP"; // PING or TCP or HTTP
            int    delay         = 5;     // 5-10
            int    maxRetries    = 1;     // 1-5
            string urlPath       = null;
            string expectedCodes = null;

            // create
            var monitor = os.CreateHealthMonitor(monitorType, delay, maxRetries, urlPath, expectedCodes);

            try
            {
                // update
                int    newDelay      = 6;
                int    newMaxRetries = 3;
                string newUrlPath    = "http://www.google.com";
                monitor = os.UpdateHealthMonitor(monitor.Id, newDelay, newMaxRetries, newUrlPath);

                Assert.IsNotNull(monitor);
            }
            finally
            {
                Assert.IsTrue(os.DeleteHealthMonitor(monitor.Id));
            }
        }
        public void GetKeypairTest()
        {
            var    os          = new OpenStackMember(UserName, Password, TenantName, TenantId);
            string keypairName = string.Format("keypair-key-{0}", TesterName);

            KeypairData[] keypairs = os.ListKeypairs().ToArray <KeypairData>();
            string        name     = (from b in keypairs where b.KeyPair.Name == keypairName select b.KeyPair.Name).FirstOrDefault();

            if (string.IsNullOrEmpty(name))
            {
                // add keypair
                Keypair kp = os.AddKeypair(keypairName);
                Assert.IsNotNull(kp);
                Assert.IsNotNull(kp.PublicKey);
                Assert.IsNotNull(kp.FingerPrint);
                Assert.IsNotNull(kp.UserId);
                Trace.WriteLine(String.Format("keypair added : {0}", DateTime.Now));
                Trace.WriteLine(String.Format("KeypairName : {0}", kp.Name));
            }

            Keypair k = os.GetKeypair(keypairName);

            Assert.IsNotNull(k);
            Assert.IsNotNull(k.Name);
            Trace.WriteLine(k.Name);
            Assert.IsNotNull(k.PublicKey);
            Trace.WriteLine(k.PublicKey);
        }
Ejemplo n.º 25
0
        public void ListGlanceImagesTest()
        {
            var os     = new OpenStackMember(UserName, Password, TenantName, TenantId);
            var images = os.ListGlanceImages();

            Assert.IsNotNull(images);
        }
        public void ListFlavorsDetailsTest()
        {
            foreach (var m in TestEnvMembers.Members)
            {
                var os = new OpenStackMember(m.UserName, m.Password, m.TenantName); // without tenant, can not get endpoints.
                IEnumerable <Flavor> flavors = null;
                try
                {
                    flavors = os.ListFlavors();
                }
                catch (net.openstack.Core.Exceptions.UserAuthorizationException uae)
                {
                    Assert.IsTrue(uae.Message.Equals("The user does not have access to the requested service or region."));
                    return;
                }

                os      = new OpenStackMember(m.UserName, m.Password, m.TenantName); // with tenant
                flavors = os.ListFlavorsDetails();
                Assert.IsNotNull(flavors);
                foreach (var f in flavors)
                {
                    Assert.IsNotNull(f.Id);
                    Assert.IsNotNull(f.Name);
                    Assert.IsNotNull(f.Links);
                }
            }
        }
Ejemplo n.º 27
0
        static void Main(string[] args)
        {
            string username   = ""; // input your user name like gncu12345678
            string password   = ""; // input your own password
            string tenantname = ""; // input your own tenant name like gnct12345678
            string tenantid   = ""; // input your tenant id, which is 32 characters
            string region     = "tyo1";

            var osm = new OpenStackMember(
                username,
                password,
                tenantname,
                tenantid,
                defaultregion: region,
                bLazyProviderSetting: false
                );

            var activeServer = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.Active);

            if (activeServer != null)
            {
                Console.WriteLine(String.Format("{0} is active.", activeServer.Id));
                var console = osm.GetVncConsole(activeServer.Id);
                Console.WriteLine(console.Url);
                System.Diagnostics.Process.Start(console.Url);
            }
            else
            {
                Console.WriteLine("there is no active servers.");
            }
        }
        public void GetKeypairTest_Invalid()
        {
            var os = new OpenStackMember(UserName, Password, TenantName, TenantId);

            // expect ItemNotFoundException
            os.GetKeypair(InvalidItemName);
        }
        public void ListProductItemsTest()
        {
            var os           = new OpenStackMember(UserName, Password, TenantName); // with tenant
            var productitems = os.ListProducts();

            Assert.IsNotNull(productitems);

            foreach (var productitem in productitems)
            {
                Trace.WriteLine("=======================================================");
                Trace.WriteLine(string.Format("ServiceName : {0}", productitem.ServiceName));

                if (productitem.Products != null)
                {
                    foreach (var p in productitem.Products)
                    {
                        Trace.WriteLine("\t=======================================================");
                        Trace.WriteLine(string.Format("\tProductId : {0}", p.ProductId));
                        Trace.WriteLine(string.Format("\tProductName : {0}", p.ProductName));
                        Trace.WriteLine(string.Format("\tMnemonic : {0}", p.Mnemonic));
                        Trace.WriteLine(string.Format("\tProductPriceId : {0}", p.ProductPriceId));
                        Trace.WriteLine(string.Format("\tUnitPrice : {0}", p.UnitPrice));
                        Trace.WriteLine(string.Format("\tStartDate : {0}", p.StartDate));
                    }
                }
            }
        }
        public void AddInterfaceAttachmentTest()
        {
            var          osm    = new OpenStackMember(UserName, Password, TenantName, TenantId);
            SimpleServer ss     = osm.ListServers().FirstOrDefault(s => s.GetDetails().Status == ServerState.Active);
            Server       server = osm.GetServer(ss.Id);

            Trace.WriteLine(string.Format("s.Status : {0}", server.Status));
            Trace.WriteLine(string.Format("s.VMState : {0}", server.VMState));

            // detach all port
            foreach (var _i in osm.ListInterfaceAttachments(ss.Id))
            {
                Assert.IsTrue(osm.DeleteInterfaceAttachment(ss.Id, _i.PortId));
            }

            // add interface
            var portId            = GetInterfaceAttachmentIdByTesterName();
            InterfaceAttachment i = osm.AddInterfaceAttachment(ss.Id, portId);

            try
            {
                Trace.WriteLine(string.Format("interface attachment added : {0}", DateTime.Now));
                Trace.WriteLine(string.Format("PortId : {0}, NetId : {1}, MacAddress : {2}, PortState : {3}", i.PortId, i.NetId, i.MacAddr, i.PortState));
                Assert.IsNotNull(i);
                Assert.IsNotNull(i.PortId);
                Assert.IsNotNull(i.NetId);
                Assert.IsNotNull(i.MacAddr);
                Assert.IsNotNull(i.PortState);
            }
            finally
            {
                // delete interface
                Assert.IsTrue(osm.DeleteInterfaceAttachment(ss.Id, i.PortId));
            }
        }